Python:包的导入错误
我在使用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
环境变量里。