首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/PyCharm:运行子程序包模块时的差异

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

Stack Overflow用户
提问于 2018-03-05 23:43:58
回答 2查看 36关注 0票数 0

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

代码语言:javascript
复制
/project
    /pkg
        __init__.py
        engine.y
        ai.py
    __init__.py
    test_script.py

engine.py有一个使用ai.py的import语句,如下所示

代码语言:javascript
复制
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.放在导入模块的前面,它会用红色下划线表示它找不到模块(但仍在运行)。我到处寻找这个问题的解决方案,但只会变得更加困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-06 07:14:43

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

代码语言:javascript
复制
cd project/
python -m pkg.engine
票数 1
EN

Stack Overflow用户

发布于 2018-03-06 00:02:07

在同一脚本或同一级别的另一个脚本中创建类似于使用test_script.py所做的操作,并从那里调用这些脚本。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49114180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档