Python:包的导入错误

1 投票
2 回答
576 浏览
提问于 2025-04-17 13:08

我在使用Eclipse开发,使用的是pydev插件。当我在Eclipse中运行项目时,一切都正常。但是当我尝试从命令行运行时,就出现了导入错误。我有这样的目录结构:

      TGRParser 
        |----tgr
              |--graph
              |--main
              |   |-- main.py
              |   |-- __init__.py  
              |--parser
                  |--__init__py
                  |--parserClass.py

现在我在名为main的模块(main.py)中有一个Main类,这个模块在名为main的包里(TGRParser/tgr/main)。现在在Main类中,我尝试调用

    from tgr.parser.parserClass import Parser

在Eclipse中运行时一切正常,但从命令行运行时完全不行。我检查了sys.path,发现命令行和Eclipse中的路径是一样的。

它显示:

 File "main.py", line 6, in <module>
from tgr.parser.parserClass import Parser
ImportError: No module named tgr.parser.parserClass

2 个回答

1

如果你在命令行中这样运行:

python main.py

而且是在主文件夹里,那么你就不能使用 import tgr...,因为 tgr 文件夹在更上层的目录里。而且,当你在包里面运行程序时,做相对导入也是不行的,所以像 from .. import parser 这样的写法也会出错。

最好的办法是把 main.py 移到 TGRParser 文件夹里,也就是和 tgr 文件夹放在一起。这样一来,运行 python main.py 就可以正常工作了。

2

TGRParser 这个文件夹添加到你的 PYTHONPATH 环境变量里。

撰写回答