в настоящее время PipEnv можно использовать в каталоге, чтобы проверить, есть ли у нас соответствующая среда pipenv или нет (например, pipenv --py
). Есть ли аналогичный API для определения того, является ли данный интерпретатор pipenv? Хотел проверить это перед публикацией проблемы в репозитории Pipenv.
Как проверить, является ли данная среда Python PipEnv
Ответы (2)
Вам может понадобиться больше точности, чем данный ответ в Makefile или как часть процесса сборки, потому что пользователь может использовать virtualenv
или pyenv
.
Когда вы запускаете pipenv shell
, я заметил, что устанавливается переменная окружения: PIPENV_ACTIVE=1
После выхода из оболочки с помощью exit
значение PIPENV_SHELL
будет сброшено.
Таким образом, в Makefile (это может быть особый синтаксис gnu-make) вы можете добавить цель:
guard-%:
@ if [ "${${*}}" = "" ]; then \
echo "Run pipenv before command" \
exit 1; \
fi
evaluate: guard-PIPENV_ACTIVE # evaluate model
python evaluate_model.py
$ make evaluate
Makefile:18: *** Run pipenv shell before command. Stop.
Примечание. make
требует табуляции, а не пробелов, поэтому при копировании вам придется заменить.
guard-%
из https://stackoverflow.com/a/7367903/1340069
Из оболочки Pipenv вы можете запустить «pip -V», который покажет вам путь к используемой вами версии pip, которая будет включать путь к виртуальной среде и интерпретатор Python.
Например:
pipenv shell
Производит:
Spawning environment shell (/bin/bash). Use 'exit' to leave.
~/$ . /home/<username>/.local/share/virtualenvs/projects-6W-pCI0A/bin/activate
Затем из оболочки Pipenv запустив
pip -V
Дает:
pip 10.0.1 from /home/<username>/.local/share/virtualenvs/projects-6W-pCI0A/local/lib/python2.7/site-packages/pip (python 2.7)
Конечно, ваше имя пользователя заменит <username>
, а ваш текущий рабочий каталог заменит мой (projects
).