Я пытаюсь создать новый пакет, однако, когда я пытаюсь запустить любой из файлов изнутри VSCode или из терминала, я сталкиваюсь с этой ошибкой:
ModuleNotFoundError: No module name 'x'
Моя текущая структура папок выглядит следующим образом:
package
|---module
|------__init__.py
|------calculations.py
|------miscfuncs.py
|---tests
|------__init__.py
|------test_calcs.py
|---setup.py
|---requirements.txt
Однако, когда я запускаю свои тесты (PyTest) через VSCode и использую import module.calculations as calc
или from module.calculations import Class
в test_calcs.py, тесты работают, как и ожидалось, что меня сбивает с толку.
Я знаю, что это часто задаваемый вопрос, но я не могу найти решение, которое будет работать здесь.
Я попытался проверить, что рабочий каталог находится в системном пути, используя приведенный ниже код. Первый элемент в возвращаемом списке каталогов — это тот, в котором я работаю.
import sys
print(sys.path)
Я также использовал следующее в файлах безрезультатно:
import module.calculations
import.module.calculations
from. import miscfuncs
При попытке import.module.calculations
получаю следующее:
ModuleNotFoundError: No module named '__main__.module'; '__main__' is not a package
При попытке from. import miscfuncs
в расчетах.py я получаю следующую ошибку:
ImportError: cannot import name 'miscfuncs'
При работе с файлом в папке модуля я могу использовать относительный импорт: import calculations
и он отлично работает. Это нормально для файлов внутри модуля, но не тогда, когда я работаю в test_calcs.py.
В моем setup.py у меня есть строка для:
packages=['module']
С удовольствием опубликую дополнительную информацию, если потребуется, или ссылку на мой репозиторий для полного кода.
РЕДАКТИРОВАТЬ
Следующее решение Ремрама:
Я обновил, launch.json
чтобы включить переменные CWD
и.PYTHONPATH
Имя модуля по-прежнему не распознается, однако IntelliSense в VSCode прекрасно распознает функции в импортированном файле.
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}",
"env": {"PYTHONPATH": "${cwd}"
}
}
]
Решение проблемы
Убедитесь, что вы работаете из package
папки (а не из package/module
), если хотите import module.calculations
работать. Вы также можете установить PYTHONPATH
переменную среды на путь к package
папке.
Комментариев нет:
Отправить комментарий