Python / PyCharm:运行子包模块时的差异

时间:2018-03-05 15:43:58

标签: python module pycharm python-import

我将一个项目细分为包,结构如下:

import pkg.ai as ai

engine.py有一个import语句,可以使用看起来像

的ai.py.
python test_script.py

这意味着test_script.py可以在命令行中以python engine.py运行,并且没有问题。但是出于调试目的,engine.py也经常运行。在PyCharm中运行时没有问题,但在使用No module named pkg时,我收到错误pkg.

有没有什么方法可以在命令行中运行engine.py,以便它没有像PyCharm那样的导入错误?

有趣的是,PyCharm的工作方式是,如果我不将etag放在导入模块的前面,它会用红色突出显示它无法找到模块(但仍然运行)。我到处寻找解决方案,但只是更加困惑。

2 个答案:

答案 0 :(得分:1)

here解释了对此问题的最佳解释。简而言之,在engine.py中使用import pkg.ai保留绝对导入,但是当我想运行引擎模块以进行测试时,它应该在模块标志的顶层(在项目目录中)运行时,例如:

cd project/
python -m pkg.engine

答案 1 :(得分:0)

使用类似于test_script.py的内容,在同一个脚本或同一级别的另一个脚本中,从那里调用脚本。

您可能还想阅读我的两个答案herehere,它们包含两个关于如何使用导入包的示例。这应该有助于您了解它们的用法。