使用Windows7和Python2.7。我在c:\Python27\Lib\site-packages\regetron
中有一个名为Regetron的包,它包含__init__.py
和engine.py
。当我试图通过键入regetron
从命令提示符运行此库时,出现以下错误:
Traceback (most recent call last):
File "C:\Python27\Scripts\regetron.py", line 6, in <module>
from regetron.engine import Regetron
File "C:\Python27\Scripts\regetron.py", line 6, in <module>
from regetron.engine import Regetron
ImportError: No module named engine
我将c:\Python27\Lib\site-packages\regetron
添加到%PYTHONPATH%,可以从其他文件夹中的其他脚本以及交互式提示符成功导入此模块,但由于某些原因,它拒绝从命令提示符运行。怎么回事?你知道吗
你实际上有两个问题。修复其中一个实际上可以消除直接错误,但是您需要同时修复这两个错误。你知道吗
您不应该有名为
regetron
的脚本,也不应该有名为regetron
的模块或包。通过重命名脚本来修复它。但如果你想了解它为什么会引起问题:当前工作目录始终是
sys.path
的一部分。因此,您在目录中的regetron.py
在,并且您用regetron
运行它。这意味着regetron.py
在路径上。因此,当您import regetron
时,它会找到您的脚本,而不是包。或者,当您from regetron import engine
时,它会找到您的脚本,并尝试从中导入一个名为engine
的变量/函数/类/任何东西,而不是找到包并尝试导入它下面的模块。你知道吗永远不要将包的目录添加到
sys.path
。你知道吗由于站点包已经在
sys.path
中,因此regetron/engine.py
中的代码已经作为regetron.engine
提供。您不希望它也可以作为engine
使用。这会引起各种各样的问题。你知道吗因此,将脚本重命名为其他脚本,从
%PYTHONPATH%
中删除regetron,一切都会很好。你知道吗但是您可能需要(重新)阅读教程中关于Packages的部分。你知道吗
相关问题 更多 >
编程相关推荐