我确实意识到这是一个愚蠢的问题,但我已经尝试了一个小时,我无法做到正确。
所以,我有一个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
这些是有问题的文件:
答案 0 :(得分:3)
将文件放在同一目录中,这样就可以开始了。好像你已经弄明白了。如果你拥有的只是.py文件,那就是你通常希望做的事情。
如果您无法从模块导入名称,通常意味着该模块中不存在该名称。尝试:
import priodict
print dir(priodict)
是否列出了priority_dict
?如果没有,是否有一个类似命名的属性,可能是你正在寻找的?可能只是给你的指令拼写错误,就像_不需要。
如果导入行失败,可能是模块代码本身出现错误,必须先进行纠正。你会得到一个错误,告诉你大概它在哪里。