我有一个细分为包的项目,结构如下:
/project
/pkg
__init__.py
engine.y
ai.py
__init__.py
test_script.pyengine.py有一个使用ai.py的import语句,如下所示
import pkg.ai as ai这意味着test_script.py可以作为python test_script.py在命令行中运行,并且没有任何问题。但是,出于调试目的,也经常运行engine.py。在PyCharm中运行时没有问题,但在使用python engine.py时,我得到的错误是No module named pkg。
有没有办法让我在命令行中运行engine.py,这样它就不会像PyCharm那样出现导入错误?
有趣的是,PyCharm的工作方式是,如果我不将该pkg.放在导入模块的前面,它会用红色下划线表示它找不到模块(但仍在运行)。我到处寻找这个问题的解决方案,但只会变得更加困惑。
发布于 2018-03-06 07:14:43
对这个问题的最好解释是here。简而言之,在engine.py中使用import pkg.ai保留绝对导入,但是当我出于测试原因想要运行引擎模块时,它应该使用模块标志在顶层运行(当在项目目录中时),例如:
cd project/
python -m pkg.enginehttps://stackoverflow.com/questions/49114180
复制相似问题