Scripts目录中的ImportError

时间:2013-11-29 05:36:51

标签: python importerror

使用Windows 7和python 2.7。我在c:\Python27\Lib\site-packages\regetron中有一个名为Regetron的软件包,其中包含__init__.pyengine.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%并且可以从位于其他文件夹中的其他脚本以及交互式提示中成功导入此模块,但由于某种原因它拒绝从命令提示符运行。发生了什么事?

1 个答案:

答案 0 :(得分:0)

你实际上有两个问题。修复其中任何一个实际上会消除您的即时错误,但您需要修复它们。

  

当我尝试通过输入regetron

从命令提示符运行此库时

您不应该有一个名为regetron的脚本,并且还有一个名为regetron的模块或包。通过重命名脚本来修复它。但是如果你想了解它导致问题的原因:

当前工作目录始终是sys.path的一部分。因此,您位于regetron.py的目录中,并使用regetron运行它。这意味着regetron.py正在路上。因此,当您import regetron时,它会找到您的脚本,而不是包。或者,当您from regetron import engine时,它会找到您的脚本,并尝试从中导入变量/函数/类/任何名为engine的内容,而不是查找包并尝试导入其下的模块。


  

我将c:\ Python27 \ Lib \ site-packages \ regetron添加到%PYTHONPATH%

永远不要将包的目录添加到sys.path

由于网站套餐已经在sys.path,因此regetron/engine.py中的代码已经显示为regetron.engine。您不希望 engine的形式提供。这会引起各种各样的问题。


因此,将脚本重命名为其他内容,从%PYTHONPATH%删除regetron,一切都会好的。

但您可能希望(重新)阅读教程中Packages的部分。