#python #python-3.x #pycharm #ipython #python-module
#python #python-3.x #pycharm #ipython #python-модуль
Вопрос:
Учитывая следующий простой проект Python,
$ tree
.
├── Pipfile
├── Pipfile.lock
├── src
└── tests
├── test_foo.py
└── util.py
$ cat Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
ipython = "*"
pytest = "*"
[dev-packages]
[requires]
python_version = "3.9"
$ cat tests/util.py
FOO = 5
$ cat tests/test_foo.py
from tests.util import FOO
def test_foo():
assert FOO == 5
Запуск PyCharm debugger при test_foo
использовании pytest
с соответствующим pipenv --venv
выдает следующую ошибку:
Connected to pydev debugger (build 202.8194.15)
Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'tests.util'
Ответ №1:
В test_foo.py
, если вы распечатаете sys.path
, вы заметите, что PyCharm внедрил <path_to_venv>/lib/python<version>/site-packages/IPython/extensions
, который содержит tests
модуль, который блокирует локальное пространство tests
имен. Об этой проблеме уже сообщалось в восходящем потоке: см. https://github.com/ipython/ipython/issues/11592 .
На данный момент есть два обходных пути:
- Переименуйте свой
tests
каталог во что-то другое. - Удалите
<path_to_venv>/lib/python<version>/site-packages/IPython/extensions/tests
папку.