Как 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, поэтому вам не нужно беспокоиться о различных
PKGNAME
s, имеющих конфликтующие зависимости.Это работает лакомство для
csvkit
:
- первая установка
pipsi
.Затем выпуск:
pipsi install csvkit
Наконец, убедитесь, что каталог bin
pipsi
(обычно~/.local/bin
) находится в вашем пути.Вот оно! Теперь вы можете ввести в строке comamnd, например,
csvcut --help
Который вызывает
csvcut
в своем собственном virtualenv.Нет необходимости вручную активировать virtualenv, и Ваша система Python не загрязняется дополнительными пакетами (кроме
pipsi
пакет раз и навсегда).