Как 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 3

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:

  1. первая установка pipsi.
  2. Затем выпуск:

    pipsi install csvkit
    
  3. Наконец, убедитесь, что каталог bin pipsi (обычно ~/.local/bin) находится в вашем пути.

Вот оно! Теперь вы можете ввести в строке comamnd, например,

csvcut --help

Который вызывает csvcut в своем собственном virtualenv.

Нет необходимости вручную активировать virtualenv, и Ваша система Python не загрязняется дополнительными пакетами (кроме pipsi пакет раз и навсегда).