#python #pipenv
Вопрос:
Pipenv позволяет использовать системный Python вместо создания virtualenv для установки пакетов:
$ pipenv install --system
Но если я это сделаю, последующие pipenv run
s попытаются создать virtualenv вместо использования системного Python. В частности, меня интересует использование скриптов Pipenv:
$ pipenv run postinstall
Creating a virtualenv for this project...
Есть ли способ использовать системный интерпретатор Python для сценариев Pipenv?
Ответ №1:
Насколько мне известно, невозможно запускать сценарии внутри Pipfile
с pipenv
, если вы их не используете
Сопровождающие pipenv
решили отказаться от такой функции пару лет назад (например, см. Обсуждение на странице Добавить флаг —system в pipenv run #2693), и я не могу найти ничего нового, что говорило бы об обратном.
Если вы хотите запустить скрипт при установке вашей системы, просто запустите его в обычном режиме в терминале. Если вы работаете без виртуальной среды, вам не нужно pipenv
запускать какие-либо сценарии. Например, если вы определились app = "uvicorn my_app.main:app --port 8080"
в script
разделе и выполнили установку системы, вы можете затем просто позвонить uvicorn my_app.main:app --port 8080
в терминал.
Я понимаю, что есть некоторое удобство для определения некоторых сценариев/псевдонимов в Pipfile
. Но если они вам нужны и за пределами виртуальных сред, было бы лучше просто создать реальные сценарии оболочки. И если вы хотите, чтобы pipenv run
функциональность продолжала работать, просто убедитесь, что эти сценарии определены в Pipfile
вызове сценариев оболочки, чтобы избежать дублирования кода.
Ответ №2:
При настройке pipenv вы можете указать версию Python, используя: pipenv --python 3.6
, для использования Python3.6.
Редактирование файла Pip также работает, изменяя:
[requires]
python_version = "3.6.6"
к конкретной версии Python, которую вы хотите.
Если вы сделали все это и все еще испытываете проблемы с доступом к правильной версии Python изнутри pipenv shell
, то вы можете проверить свой .bashrc
файл, чтобы убедиться, что у вас нет alias
для конкретной версии Python.
Комментарии:
1. Я знаю, что могу указать версию Python, и я не пытаюсь ее использовать
pipenv shell
.