当通过终端运行代码时,Python3会出现“ModuleNotFoundError”,但在python虚拟环境中一切都能正常工作

2024-09-28 05:28:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用Python导入模块/包时遇到问题。我在终端(CMD)上运行时注意到这个问题, 而不是我的IDE(我使用PyCharm)。在PyCharm中,我在python3.7中使用了一个虚拟环境设置,一切都像一个charm 如你所愿。你知道吗

以下是在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'

注意:我使用的是最新的python3.7

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

经过一段时间的研究,我发现可以在python3中进行不同类型的导入,并进行了尝试(使用. 在导入的名称之前)。像这样:

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.7venv中工作,但不能在其外部工作


Tags: 模块文件frompytestimport目录cmd
2条回答

我通过在系统环境变量中设置带有项目路径的PYTHONPATH来修复这个问题。作为一个值,我将dir放在项目中。谢谢你的小费。你知道吗

对于目录,必须使用init.py。在模块中,它不需要包含init.py。请检查你的主目录和你的模块…希望这有帮助。。。。你知道吗

相关问题 更多 >

    热门问题