Как pip-установить пакет Python в виртуальную env и сделать команды CLI доступными в обычной оболочке
Для больших пакетов Python, которые могут мешать другим пакетам, рекомендуется установить их в свою собственную виртуальную среду, а некоторые пакеты Python предоставляют команды CLI в оболочку.
Есть ли способ pip-установить такой пакет в свою собственную виртуальную среду, но есть команды CLI, доступные из обычной оболочки без переключения предварительно вручную в эту виртуальную среду?
Вот пример: когда я устанавливаю csvkit via
pip install csvkit
У меня есть команды csvcut, csvlook, csvgrep и другие доступные в моем
ракушка. Однако если я не хочу устанавливать cvskit в моей системе-Python и
установите его в виртуальную среду, скажем, в ~/venvs/csvkit, у меня есть
csvkit доступен только в том случае, если я активировал среду вручную
csvkit.
Есть ли способ создать виртуальную среду и установить в нее csvkit ,
так что команды типа csvcut активируют окружение себя раньше
они бегут?
2 ответа:
Вы можете создать псевдонимы, такие как
csvcutи указать их наsource ~/venvs/csvkit/bin/activate && csvcut && source deactivateЕсли эти программы принимают параметры, вы можете использовать функции и определить в файле
.bashrc:csvcut() { #do things with parameters like $1 such as source ~/venvs/csvkit/bin/activate csvcut $1 $2 $3 $4 $5 deactivate }Чтобы вызвать функцию, просто используйте команду
csvcut <your_parameter>.
Использование
pipsi. Вот описание из ReadMe проекта:Pipsi устанавливает каждый пакет в ~/.local/venvs/PKGNAME, а затем символически связывает все новые скрипты в ~/.local/bin (они могут быть изменены переменными pipsi_home и PIPSI_BIN_DIR env соответственно).
По сравнению с pip install -- user каждый PKGNAME устанавливается в свой собственный virtualenv, поэтому вам не нужно беспокоиться о различных
PKGNAMEs, имеющих конфликтующие зависимости.Это работает лакомство для
csvkit:
- первая установка
pipsi.Затем выпуск:
pipsi install csvkitНаконец, убедитесь, что каталог bin
pipsi(обычно~/.local/bin) находится в вашем пути.Вот оно! Теперь вы можете ввести в строке comamnd, например,
csvcut --helpКоторый вызывает
csvcutв своем собственном virtualenv.Нет необходимости вручную активировать virtualenv, и Ваша система Python не загрязняется дополнительными пакетами (кроме
pipsiпакет раз и навсегда).