2013-03-03 53 views
4

我的确意识到这是一个不好的问题,但我一直在尝试一个小时,但我无法做到。如何以.py文件的形式安装Python模块?

所以,我有一个Python脚本,我想修改一下,作为一个Python初学者来玩。然而,在脚本的最开始,有这样的:

from priodict import priority_dict 

现在,我有一个名为priodict.py文件与脚本来了。但是,如何将它提供给脚本,使其可以像这样被包含?

Python手册有关于安装模块的页面和页面,但它们似乎都指代将被放置在某些目录中的“包”等等。我只有.py文件时该怎么办?

我知道可能对此有一个平庸的一句话回应,但我感到沮丧,而且时间不够,所以我决定采取简单的方法,并让Stack对此溢出了解。

看来,如果我没有priodict.py文件,我得到这个错误:如果我把在同一目录作为我的脚本文件

Traceback (most recent call last): 
    File "C:\Python27\scripts\dijksta.py", line 192, in <module> 
    main() 
    File "C:\Python27\scripts\dijksta.py", line 185, in main 
    D, _ = dijkstra(G, 1, v) 
    File "C:\Python27\scripts\dijksta.py", line 139, in dijkstra 
    Q = priority_dict() # est.dist. of non-final vert. 
NameError: global name 'priority_dict' is not defined 

,我得到这个错误:

Traceback (most recent call last): 
    File "C:\Python27\scripts\dijksta.py", line 2, in <module> 
    from priodict import priority_dict 
ImportError: cannot import name priority_dict 

这是有问题的文件:

https://github.com/kqdtran/ADA1/tree/master/dijkstra

+1

你可能已经改变了'dijkstra.py'文件。代码不应该产生NameError(并且与安装模块无关)。 – jfs 2013-03-03 18:24:42

+0

你是对的,当文件在同一个目录下时,错误确实是不同的 - 但仍然存在错误。如果有人能够高层次地分析可能会出现什么问题,那么我将新错误和链接提供给问题中的文件。 – jovan 2013-03-03 18:27:45

+0

您可能会收到第一个错误的唯一方法是如果您删除或更改了'from ... import'行。我不知道你是如何得到第二个错误,但我认为这也是因为你改变了一些东西。尝试使用这些文件的原始版本而无需更改任何内容。 – interjay 2013-03-03 18:30:40

回答

3

的Plac e将文件放在同一个目录中,这会让你开始。似乎你已经想出了很多。如果你只有一个.py文件,那就是你通常所期望的。

如果您无法从模块导入名称,通常意味着该名称不在该模块中。试试:

import priodict 
print dir(priodict) 

priority_dict列出?如果没有,是否有一个类似的命名属性,可能是你在找什么?可能是因为给你的指示拼写错误,就像_不需要。

如果在导入行上失败,可能是因为模块代码本身存在错误,必须先进行更正。你会得到一个错误,告诉你大概它在哪里。