#linux #python-poetry
Вопрос:
Я работаю с поэзией Python, и мне нужно автоматизировать этот процесс. В частности, каждый раз, когда мне нужно перейти в каталог с
cd /work/directory
И породить поэтическую оболочку с
poetry shell
и снова перейдите в другой каталог
cd /other/directory
чтобы закончить работу.
Я бы хотел автоматизировать это с помощью небольшого скрипта, такого как
#!/bin/bash
cd /work/directory
poetry shell
cd /other/directory
# do work
Однако всякий раз, когда я запускаю этот сценарий, я застреваю poetry shell
. Есть ли какой-нибудь вариант, подобный bash -c
, чтобы я мог сделать следующее?
poetry shell -c "cd /other/directory amp;amp; do work"
Комментарии:
1. ты когда-нибудь понимал это? Пожалуйста, поделитесь своим ответом!
2. @Dobler нет, извините
Ответ №1:
Вероятно, вы хотите запустить скрипт на python, используя виртуальную среду poetry. В этом случае, я думаю, вам следует использовать простую команду
poetry run {your_command}
Для более практического примера вы можете запустить скрипт на python следующим образом
poetry run python myscript.py
который будет использовать poetry
виртуальную среду, с которой вы уже создали poetry install
.
Ответ №2:
столкнулся с той же проблемой. это было опубликовано кем — то на сервере poetry discord:
Я не уверен, что poetry shell
именно влечет за собой бег во всех деталях. Но… Может быть, вам достаточно просто активировать виртуальную среду. И если то, что вы хотите сделать, не является интерактивной работой в командной строке, то активация среды может даже не потребоваться.
Как правило, сначала вам нужно будет определить путь к виртуальной среде с помощью чего-то вроде poetry env info --path
. Как только вы узнаете, что вы можете «активировать его» из любого места:
. /path/to/venv/bin/activate
Или (в большинстве случаев) вы можете просто использовать любой из исполняемых файлов из этой виртуальной среды напрямую, без необходимости сначала активировать:
/path/to/venv/bin/python path/to/script.py
Ответ №3:
Ремикс из других ответов.
poetry shell
создает среду, но мы также можем создать среду вручную с помощью env use
команды.
# This will create a Python3.7 env
poetry env use 3.7
Зачем использовать env use
vs shell
?
env use
это чистый метод, который имеет выход и завершает процесс. Он также активирует окружающую среду по мере необходимости.
Поэтому после env
завершения мы действительно можем использовать ответ @DaveR и использовать run
команду.
Цепная версия этого my_bash_script.sh
сценария будет:
#!/bin/bash
# Activate / Create activate my enviroment
poetry env use 3.7
# Run my script in the above environment
poetry run python3.7 my_script.py
Дополнительный
env
команда полезна для просмотра того, какие среды вы активировали.
poetry env list