У меня есть python проект, который использует поэзию и токсик. Он имеет исходный код, тесты и скрипты (блокноты в формате Juptext). Я не могу импортировать зависимости dev в скриптах, но могу в тестах.
Когда я столкнулся с этой проблемой, я создал следующий минимальный пример. Сначала это не сработало, потом я возился с этим, и теперь оно работает. Поэтому я удалил проект, в котором есть реальная проблема, чтобы он не отличался от имени проекта, местоположения, виртуального окружения и каталога. git, но он все еще не работает.
ОБНОВЛЕНИЕ удаление всех артефактов сборки и virtualenv для минимального примера приводит к тому, что он перестает работать снова
ОБНОВЛЕНИЕ добавление строки scripts: poetry install
к командам tox исправлено только минимальное значение пример
Исходный код, тесты и сценарии находятся в следующем макете
foo
+--foo
| +--__init__.py
|
+--tests
| +--__init__.py
| +--test_foo.py
|
+--scripts
| +--foo_script.py
|
+--pyproject.toml
+--tox.ini
Файлы либо пусты, либо имеют следующий вид:
foo_script.py
import requests
test_foo.py
import requests
import pytest
def test():
assert True
pyproject.toml
[tool.poetry]
name = "foo"
version = "0.1.0"
description = ""
authors = ["foo maker"]
[tool.poetry.dependencies]
python = "^3.7"
requests = "*"
[tool.poetry.dev-dependencies]
pytest = "^4.6"
[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
tox.ini
[tox]
envlist = test, scripts
isolated_build = true
skipsdist = true
[testenv]
basepython = python3.7
whitelist_externals =
pytest
bash
commands =
test: pytest
scripts: bash -c 'python3 scripts/*.py'
Когда я запускаю tox, я получаю
test run-test-pre: PYTHONHASHSEED='4126239415'
test run-test: commands[0] | pytest
============================= test session starts ==============================
platform linux -- Python 3.6.9, pytest-5.2.1, py-1.8.0, pluggy-0.13.0
cachedir: .tox/test/.pytest_cache
rootdir: /home/#######/foo
collected 1 item
tests/test_foo.py . [100%]
============================== 1 passed in 0.09s ===============================
scripts run-test-pre: PYTHONHASHSEED='4126239415'
scripts run-test: commands[0] | bash -c 'python3 scripts/*.py'
Traceback (most recent call last):
File "scripts/foo_script.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
ERROR: InvocationError for command /bin/bash -c 'python3 scripts/*.py' (exited with code 1)
___________________________________ summary ____________________________________
test: commands succeeded
ERROR: scripts: commands failed