Python/PyCharm: 运行分包模块时的区别
Python/PyCharm: Differences when running subpackage modules
我有一个项目细分为包,结构如下:
/project
/pkg
__init__.py
engine.y
ai.py
__init__.py
test_script.py
engine.py 有一个使用 ai.py 的导入语句,看起来像
import pkg.ai as ai
这意味着 test_script.py 可以在命令行中 运行 作为 python test_script.py
并且没有问题。但是出于调试目的,engine.py 也经常是 运行。在 PyCharm 中 运行ning 时没有问题,但在使用 python engine.py
时出现错误 No module named pkg
。
我有什么方法可以在命令行中 运行 engine.py 以使其不会像 PyCharm 那样出现导入错误?
有趣的是 PyCharm 的工作方式是,如果我不把 pkg.
放在导入模块前面,它会用红色下划线表示找不到模块(但仍然运行s)。我到处寻找解决方案,但只会变得更加困惑。
在同一个脚本或同一级别的另一个脚本中,制作与您在 test_script.py
中所做的类似的东西,然后从那里调用脚本。
您可能还想阅读我的两个答案 and ,它们包含两个有关如何使用导入包的示例。这应该可以帮助您了解它们的用法。
对这个问题的最佳解释是here。简而言之,在 engine.py 中保留 import pkg.ai
的绝对导入,但是当我出于测试原因想要 运行 引擎模块时,它应该在顶层 运行 (当在项目目录)与模块标志,例如:
cd project/
python -m pkg.engine
我有一个项目细分为包,结构如下:
/project
/pkg
__init__.py
engine.y
ai.py
__init__.py
test_script.py
engine.py 有一个使用 ai.py 的导入语句,看起来像
import pkg.ai as ai
这意味着 test_script.py 可以在命令行中 运行 作为 python test_script.py
并且没有问题。但是出于调试目的,engine.py 也经常是 运行。在 PyCharm 中 运行ning 时没有问题,但在使用 python engine.py
时出现错误 No module named pkg
。
我有什么方法可以在命令行中 运行 engine.py 以使其不会像 PyCharm 那样出现导入错误?
有趣的是 PyCharm 的工作方式是,如果我不把 pkg.
放在导入模块前面,它会用红色下划线表示找不到模块(但仍然运行s)。我到处寻找解决方案,但只会变得更加困惑。
在同一个脚本或同一级别的另一个脚本中,制作与您在 test_script.py
中所做的类似的东西,然后从那里调用脚本。
您可能还想阅读我的两个答案
对这个问题的最佳解释是here。简而言之,在 engine.py 中保留 import pkg.ai
的绝对导入,但是当我出于测试原因想要 运行 引擎模块时,它应该在顶层 运行 (当在项目目录)与模块标志,例如:
cd project/
python -m pkg.engine