Как заставить virtualenv работать с панцирем рыбы

Я пытаюсь заставить virtualenv работать с рыбной оболочкой. У меня установлен virtualenv, и он отлично работает с bash и zsh. Однако выполнение следующей команды возвращает fish: Unknown command 'source':

$ source ~/path/to/bin/activate

Кто-нибудь знает, как заставить работать virtualenv и fish shell. Заранее спасибо.


person drbunsen    schedule 08.06.2012    source источник
comment
Я начал использовать github.com/adambrenecki/virtualfish, который очень хорошо подходит для моих проектов.   -  person    schedule 26.07.2012


Ответы (6)


Вам не нужно активировать, чтобы использовать 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

person Community    schedule 09.06.2012
comment
Спасибо. Я пробовал active.fish, но мне нужно было обновить virtualenv до последней версии, чтобы он заработал. - person drbunsen; 10.06.2012
comment
Если вы столкнулись с конкретными ошибками, отправьте их в github.com/pypa/virtualenv в систему отслеживания проблем. - person ; 14.06.2012
comment
Отлично работает у меня - person Lee; 03.11.2014
comment
@Lee Я получаю эту проблему. paste.ubuntu.com/25955380 Что делает. здесь ссылайтесь? - person Abhishek Bhatia; 13.11.2017
comment
Ах да, я буду вводить полный путь каждый раз, когда что-то использую. Звучит здорово. - person Alper; 11.11.2020
comment
@AbhishekBhatia Ответ ниже показывает, что virtualenv теперь имеет активацию рыбы, поэтому вам не нужно делать это в этот период. Только 1_ - person Hercislife; 22.03.2021

Вы также можете использовать это: https://github.com/adambrenecki/virtualfish

Это позволяет вам активировать virtualenv, набрав это:

vf activate <my_env>
person devict    schedule 29.12.2013

Для virtualenv у fish есть отдельный файл активации в каталоге bin с расширением .fish.

Итак, вам нужно будет сделать:

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

person Sangeet    schedule 25.12.2018
comment
Это определенно путь для всех, кто смотрит на это. Принятый ответ великолепен, но, вероятно, это было до того, как это было возможно. - person Hercislife; 22.03.2021

Вы можете использовать virtualfish.

Оболочка Fish Shell для virtualenv Яна Бикинга, в некоторой степени основанная на virtualenvwrapper Дуга Хеллмана для совместимых с Борном оболочек.

Источник: https://github.com/adambrenecki/virtualfish

Документы: http://virtualfish.readthedocs.org/en/latest/

person Arie    schedule 14.01.2015

Если вы не можете использовать activate.fish, вы можете просто добавить каталог bin в свой PATH:

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

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

В качестве альтернативы: я бывший пользователь Bash, который начал использовать Fish и скучает по virtualenvwrapper Дуга Хеллмана, поэтому я только сегодня начал работать над замена под названием virtualfish - в ней есть несколько удобных ярлыков, которые могут оказаться полезными, хотя она далеко не такая полная, как VEW.

person Leigh Brenecki    schedule 01.07.2012

(Эта ветка кажется закрытой, но я нашел решение :)

Чтобы ввести новую раковину рыбы в среде венва:

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

когда каталог venv равен ./venv.

Чтобы отключить, просто ctrl-d или exit.


Другое решение, которое не вызывает дочернюю оболочку.

Создайте и войдите в среду Venv:

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

Выход из окружения:

set -lx PATH $PATH[2..-1]
person Toshihiro Kamiya    schedule 23.08.2017
comment
Спасибо ! На самом деле для меня это самое простое решение. - person Damien; 11.03.2020