Python3 'ModuleNotFoundError' 当 运行 代码通过终端时,但在 python 虚拟环境中一切正常

Python3 'ModuleNotFoundError' when running the code through the terminal, but everything works as intended in a python virtual environment

我在使用 Python 导入 modules/packages 时遇到问题。当我在我的终端(CMD)中 运行 它时,我注意到了这个问题, 而不是我的 IDE(我使用 PyCharm)。在 PyCharm 中,我使用 Python 3.7 的虚拟环境设置,一切都很好用 并按预期进行。

作为参考,这是在 test_suite.py 中完成导入的方式:

...

from tests.scenarios.test_scenario_01 import TestScenario   # They work perfectly fine
from tests.scenarios.test_scenario_02 import TestScenario2    # written like this in PyCharm venv Python 3.7, but why?

...

这是我的目录的简化版本(没有不必要的文件):

QA System/
├── locators/
│   ├── locators.py
│   ├── __init__.py
├── pages/
│   ├── pages.py
│   └── __init__.py
└── tests/
    ├── reports
    ├── test_scenarios
       ├── test_scenario_01.py
       ├── test_scenario_02.py
       ├── __init__.py
    |── test_suite.py
    |── __init__.py

然而,当 运行通过我的 CMD 手动 test_suite.py 文件时(因为我想将它与 Jenkins 集成 最终),我得到这个错误(py -3 test_suite.py):

ModuleNotFoundError: No module named 'tests'

注意:我使用的是最新的Python 3.7

根据我对 Python 导入的了解,要将目录视为 python 模块,需要有一个 '__init__.py' 文件 包含在同一目录中。

经过一番研究后,我发现可以在 Python 3 中进行不同类型的导入并进行了尝试(将 . 在进口名称之前)。像这样:

from .scenarios.test_scenario_01 import TestScenario
from .scenarios.test_scenario_02 import TestScenario2

但是,它仍然没有 运行 成功,这是我得到的错误:

ModuleNotFoundError: No module named '__main__.scenarios'; '__main__' is not a package

你能帮我解决这个问题吗?

TLDR:导入在 Python3.7 venv 中工作,但在它之外不工作

我通过在带有项目路径的系统环境变量中设置 PYTHONPATH 来解决这个问题。作为一个价值,我把目录放到了项目中。感谢您的提示。

在目录的情况下必须使用init.py。在模块中它不需要包含 init.py。请检查您的主目录是什么,模块是什么。希望这对您有所帮助....