Як змусити virtualenv працювати з рибною шкаралупою


80

Я намагаюся змусити virtualenv працювати з рибною шкаралупою. У мене встановлений virtualenv, і він чудово працює з bash і zsh. Однак запуск наступної команди повертає fish: Unknown command 'source':

$ source ~/path/to/bin/activate

Хтось знає, як змусити virtualenv і рибну оболонку працювати разом. Заздалегідь спасибі.


2
Я почав використовувати github.com/adambrenecki/virtualfish дуже добре працює для своїх проектів.

Відповіді:


190

Вам не потрібно активувати, щоб використовувати virtualenv, це зручність. Ви можете просто використовувати virtualenv безпосередньо:

virtualenv venv
./venv/bin/pip install foo

Ви пробували з риби, використовуючи:

. venv/bin/activate.fish

Ймовірно, він не настільки широко використовується, як bash, тому можуть виникнути проблеми - перегляд історії комітів показує недавнє виправлення:

https://github.com/pypa/virtualenv/blob/master/virtualenv_embedded/activate.fish


1
Дякую. Я намагався active.fish, але мені потрібно оновити virtualenv до останньої версії, щоб він працював.
drbunsen

Якщо ви стикаєтесь з конкретними помилками, будь-ласка, подайте їх на github.com/pypa/virtualenv Issue tracker

2
Для мене ідеально працює
Лі

@Lee Я отримую це питання. paste.ubuntu.com/25955380 Що означає "." тут посилаються?
Абхішек Бхатія,

О так, я збираюся вводити повний шлях кожного разу, коли щось використовую. Звучить шикарно.
Альпер


14

Для virtualenv, fish має окремий файл активації в каталозі bin із .fishрозширенням.

Отже, вам доведеться зробити:

$ source ~/path/to/bin/activate.fish



2

Якщо ви не можете використовувати activate.fish, ви можете просто додати binкаталог до вашого PATH:

set -gx PATH /path/to/virtualenv/bin $PATH

Це майже все activate.fish(ну, не зовсім, воно також знімається PYTHONHOME(що не було встановлено заздалегідь, коли я все одно спробував, YMMV); і він намагається зіпсувати ваш fish_prompt).

В якості альтернативи: я колишній користувач Bash, який почав використовувати Fish і сумує за Дагом Хеллманом virtualenvwrapper, тому я щойно почав працювати над заміною, яка називається virtualfish - у ній є кілька зручних ярликів, які можуть вам виявитися корисними, хоча це далеко не так повно, як VEW.


2

(Цю тему, здається, близько закрито, але я знайшов рішення :)

Щоб ввести нову рибну оболонку з навколишнім середовищем:

begin; set -lx PATH (realpath ./venv)/bin $PATH; fish; end

коли каталог venv є ./venv.

Щоб деактивувати, просто натисніть ctrl-d або exit.


Інше рішення, яке не викликає дочірню оболонку.

Створіть і введіть середовище вен:

python3 -m venv ./venv
set -lx PATH (realpath ./venv)/bin $PATH

Вихід із навколишнього середовища:

set -lx PATH $PATH[2..-1]

Дякую ! Насправді це найпростіше для мене рішення.
Деміен,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.