Python 在脚本目录中导入错误
使用Windows7和python 2.7。我在c:\Python27\Lib\site packages\Regetron中有一个名为Regetron的包,其中包含_init__.py和engine.py。当我试图通过键入regetron从命令提示符下运行此库时,出现以下错误:Python 在脚本目录中导入错误,python,importerror,Python,Importerror,使用Windows7和python 2.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>
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的脚本,也不应该有一个名为regetron的模块或包。通过重命名脚本来修复它。但如果您想了解它为什么会导致问题: 当前工作目录始终是sys.path的一部分。因此,您在中包含regetron.py的目录中,并使用regetron运行它。这意味着regetron.py在路径上。因此,当您导入regetron时,它会找到您的脚本,而不是包。或者,当您从regetron导入引擎中导入时,它会找到您的脚本,并尝试从中导入变量/函数/类/任何命名引擎,而不是查找包并尝试导入其下的模块 我将c:\Python27\Lib\site packages\regetron添加到%PYTHONPATH% 永远不要将包的目录添加到sys.path 由于站点包已经在sys.path上,因此regetron/engine.py中的代码已经作为regetron.engine提供。您不希望它也可以作为引擎使用。这将导致各种各样的问题 所以,将脚本重命名为其他脚本,从%PYTHONPATH%中删除regetron,一切都会好起来
但您可能需要重新阅读本教程中的部分。谢谢您的回复。重命名脚本并从%PYTHONPATH%中删除regetron后,我仍然得到:ImportError:无法导入名称regetron。这是新问题还是我没能解决老问题?@ubeatleine:听起来你没能解决老问题。有两种可能:1您是否启动了新的cmd.exe,并验证%PYTHONPATH%为空?2您的工作目录中是否仍有regetron.pyc或.pyo文件?如果是这样,您必须将其删除。