Как проверить, является ли данная среда Python PipEnv

в настоящее время PipEnv можно использовать в каталоге, чтобы проверить, есть ли у нас соответствующая среда pipenv или нет (например, pipenv --py). Есть ли аналогичный API для определения того, является ли данный интерпретатор pipenv? Хотел проверить это перед публикацией проблемы в репозитории Pipenv.


person Don    schedule 23.01.2019    source источник


Ответы (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

person James O'Brien    schedule 19.03.2020

Из оболочки 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).

person ascourtas    schedule 23.01.2019