繁体   English   中英

ModuleNotFoundError: 没有名为“src”的模块。 从没有 sys.path 的另一个目录导入模块并从现有目录执行它们

[英]ModuleNotFoundError: No module named 'src'. Import modules from another directory without sys.path and execute them from existing directory

尽管这是一个常见的问题,但我相信我有一个奇怪的情况

MAIN
| --src
     | -- data 
            | -- __init__.py
            | -- operation.py
| tests
          | __init__.py
          | test_file.py
| examples
          | __init__.py
          | example.py

test_file.py 和 example.py 的内容如下:

from src.data.operation import *

我通过在测试文件夹中导航从 powershell 执行以下命令:

python -m pytest -v test_file.py

测试文件运行良好,没有出现任何错误。

现在我通过在示例文件夹中导航从 powershell 执行以下命令:

python -m example.py

这给我带来了模块错误。 尽管测试和示例与 src 处于同一层次结构中,但仅当我通过在示例文件夹中导航来执行 example.py 文件时,我才会收到模块错误。 如果有人能解释这背后的逻辑,以及在不涉及 sys.path 的 Windows 系统中执行 example.py 的最佳方法是什么,那就太好了?

不附加 sys.path 就无法导入。 默认情况下,Python 在 $PYTHONPATH 中查找其模块和包。 当您在模块中导入某些内容时,它首先搜索具有该名称的内置模块,然后在变量 sys.path 给出的目录列表中搜索文件或文件夹。

要成功从 src 导入,请在 example.py 的顶部添加这些行

import sys
sys.path.insert(0, "PATH_TO_THE_MAIN_FOLDER")

从示例文件夹中运行模块:

python -m example   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM