如何在 Python 中正确导入模块

Posted

技术标签:

【中文标题】如何在 Python 中正确导入模块【英文标题】:How to correctly import module in Python 【发布时间】:2021-02-04 13:19:21 【问题描述】:

结构如下:

-app-l1
  -src
    -__init__.py
    -my_module.py
  -tests
    -__init__.py
    -test_my_module.py

我正在尝试将所有函数从 my_module 导入到 test_my_module.py 以进行单元测试。

我试过了: from ..src.my_module import my_module 返回 ImportError: attempted relative import with no known parent package

还尝试过: from src.my_module import my_module 返回 ModuleNotFoundError: No module named 'src.my_module'

打印出 sys.path 表明它只在 tests 目录中查找。 如何正确指定查找模块的位置?

任何帮助都会非常好! 谢谢

【问题讨论】:

这能回答你的问题吗? Importing modules from parent folder @Gugu72 我正在尝试找到一种不包括 sys.path 修改的方法 如果你阅读了答案,有一个:***.com/a/50194143/12134355 但这涉及到一个虚拟环境,并使用 pip 安装 my_module。没有更简单的方法吗? 嗯,你应该已经为每个项目有一个 venv。不,如果有更简单的方法我们会告诉你而不是给出艰难的方法,不是吗? 【参考方案1】:

您可以设置 PYTHONPATH。 Python 将在您添加到 PYTHONPATH 变量的所有路径中查找模块。 如果您不想每次都重新设置,可以将其保存在 bashrc 中。 如果你喜欢 conda env,你也可以像这样向你的 env 添加变量:

conda env config vars set PYTHONPATH=value

【讨论】:

这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review

以上是关于如何在 Python 中正确导入模块的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 模块中正确使用相对或绝对导入?

如何在 Python 中正确导入模块

如何在多目录项目中正确导入 python 模块?

如何在其他类/模块中正确导入/使用我在 Python 中构建的类和模块? [复制]

如何正确使用python模块

Python3 - tkinter 导入和使用模块