脚本目录中的导入错误

2024-09-27 04:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Windows7和Python2.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%,可以从其他文件夹中的其他脚本以及交互式提示符成功导入此模块,但由于某些原因,它拒绝从命令提示符运行。怎么回事?你知道吗


Tags: infrompylibpackageslinescriptssite
1条回答
网友
1楼 · 发布于 2024-09-27 04:26:47

你实际上有两个问题。修复其中一个实际上可以消除直接错误,但是您需要同时修复这两个错误。你知道吗

When I try to run this library from the command prompt by typing regetron

您不应该有名为regetron的脚本,也不应该有名为regetron的模块或包。通过重命名脚本来修复它。但如果你想了解它为什么会引起问题:

当前工作目录始终是sys.path的一部分。因此,您在目录中的regetron.py在,并且您用regetron运行它。这意味着regetron.py在路径上。因此,当您import regetron时,它会找到您的脚本,而不是包。或者,当您from regetron import engine时,它会找到您的脚本,并尝试从中导入一个名为engine的变量/函数/类/任何东西,而不是找到包并尝试导入它下面的模块。你知道吗


I added c:\Python27\Lib\site-packages\regetron to %PYTHONPATH%

永远不要将包的目录添加到sys.path。你知道吗

由于站点包已经在sys.path中,因此regetron/engine.py中的代码已经作为regetron.engine提供。您不希望它也可以作为engine使用。这会引起各种各样的问题。你知道吗


因此,将脚本重命名为其他脚本,从%PYTHONPATH%中删除regetron,一切都会很好。你知道吗

但是您可能需要(重新)阅读教程中关于Packages的部分。你知道吗

相关问题 更多 >

    热门问题