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。请检查您的主目录是什么,模块是什么。希望这对您有所帮助....
我在使用 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。请检查您的主目录是什么,模块是什么。希望这对您有所帮助....