4

我确实意识到这是一个愚蠢的问题,但我已经尝试了一个小时,但我无法做到正确。

因此,我有一个 Python 脚本,我想对其进行一些修改并作为 Python 初学者来玩。然而,在脚本的最开始,有这样的:

from priodict import priority_dict

现在,我有一个priodict.py随脚本一起命名的文件。但是我如何使它对脚本可用,以便可以像这样包含它?

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

我知道对此可能有一个平庸的一句话回应,但我很沮丧,而且我的时间很短,所以我决定采取简单的方法并询问堆栈溢出。

看来,如果我没有 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

4

1 回答 1

3

将文件放在同一目录中,这将使您开始。看来你已经想通了。如果您只有一个 .py 文件,那么这就是您通常期望做的事情。

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

import priodict
print dir(priodict)

priority_dict上市了吗?如果没有,是否有类似名称的属性可能是您正在寻找的?可能只是给您的说明拼写错误,例如不需要 _。

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

于 2013-03-06T21:56:25.973 回答