【问题标题】:How to properly create a package in Python如何在 Python 中正确创建包
【发布时间】:2017-08-28 21:27:03
【问题描述】:

假设我有一个名为 foo 的文件夹。在该文件夹中是__init__.py,一个名为test 的文件夹和另一个名为t1.py 的Python 文件。文件夹内test 是一个名为bar.py 的Python 文件,在该文件中我尝试执行以下操作:

from foo import t1

它给了我这个错误:

ModuleNotFoundError: No module named 'gmuwork'

是否需要在环境变量或sys.path 中添加一些内容?

【问题讨论】:

  • 第 6.4 节 here 应该很有用
  • @BradSolomon:你说得对,我会特别说第 6.4.2 节,包内引用和相对导入。

标签: python python-3.x python-import


【解决方案1】:

绝对导入

如果你想使用

from foo import t1

那么是的,foo 必须包含在 sys.path 中。 来自docs

导入包时,Python 会搜索目录 sys.path 寻找包子目录。

在这种情况下,请查看诸如adding a file path to sys.path in python 之类的问题。

相对导入

或者在bar.py 内你应该可以使用

from ..foo import t1

作为intra-package reference

最后:无论哪种方式,您都应该在 test 中放置另一个空的 __init__.py 文件,让 Python 知道该文件夹是一个子包。

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多