Poetry install, похоже, не устанавливает пакеты в нужное место
Итак, у меня уже довольно долгое время есть проблема, которую я не могу решить. В основном я взял на себя управление проектом, который использует Poetry для управления пакетами (это проект Django). Добавление пакетов с помощью 'poetry add', а затем их установка с помощью 'poetry install' - все работает нормально локально (я использую контейнер Docker). Но при переносе изменений на мой сервер и последующем запуске 'poetry install' говорится, что пакеты уже установлены. Но при запуске приложения Django я получаю внутреннюю ошибку сервера, говорящую, что пакет не существует. Пример приведен с пакетом 'openpyxl'.
pyproject.toml
...
[tool.poetry.dependencies]
openpyxl = "^3.0.10"
...
poetry.lock
...
[[package]]
name = "openpyxl"
version = "3.0.10"
description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
openpyxl = {version = ">=2.6.0", optional = true, markers = "extra == \"xlsx\""}
[package.extras]
all = ["markuppy", "odfpy", "openpyxl (>=2.6.0)", "pandas", "pyyaml", "tabulate", "xlrd", "xlwt"]
cli = ["tabulate"]
html = ["markuppy"]
ods = ["odfpy"]
pandas = ["pandas"]
xls = ["xlrd", "xlwt"]
xlsx = ["openpyxl (>=2.6.0)"]
yaml = ["pyyaml"]
openpyxl = [
{file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"},
{file = "openpyxl-3.0.10.tar.gz", hash = "sha256:e47805627aebcf860edb4edf7987b1309c1b3632f3750538ed962bbcc3bd7449"},
]
...
Есть кто-нибудь, кто имеет опыт работы с Poetry и может помочь мне с этим?
Я делаю предположение о нескольких идеях, которые вы можете попробовать (не зная больше о проблеме/контексте). Для начала:
- при запуске / старте вашего приложения вы используете
poetry run...
/poetry run python...
? Я перечисляю это первым, так как кажется, что среда py не получает доступ к установленным библиотекам. хотел бы узнать команду "при запуске приложения Django" .
- на сервере, вы можете попробовать удалить файл блокировки и повторно запустить
poetry lock
,poetry install
, чтобы иметь "новый старт". Файл блокировки, который вы предоставили, это файл с сервера? Как вы используете Docker, это только на локальном сервере? Используете ли вы Docker на сервере как запущенный контейнер? Вы можете попробовать докеризировать ваше приложение, и как часть Dockerfile скопировать файлы pyproject.toml/poetry.lock иметь docker RUN poetry cmds для установки ваших deps. - .
Опять же, это выстрелы в темноте. Некоторые области, которые могут быть более понятными/детальными, это (а) как вы запускаете приложение Django и (б) как вы используете Docker. Если вы рассматриваете пункт #3, я могу предложить вам более подробное решение. Я работал с довольно большим количеством приложений/сервисов docker+poetry.