Jak skonfigurować i używać wirtualnego środowiska python w Ubuntu?

73

Środowiska wirtualne Python służą do tworzenia izolowanych środowisk Python w celu uniknięcia konfliktów zależności i wersji, a także pośrednio zajmują się problemami z uprawnieniami. Ale jaki jest najłatwiejszy sposób na skonfigurowanie i użycie go w Ubuntu?

Gerhard Burger
źródło

Odpowiedzi:

99

Z virtualenvwrapper(przyjazne dla użytkownika opakowania dla funkcjonalności virtualenv)

Zainstaluj virtualenv

Zainstaluj za virtualenvpomocą

sudo apt-get install virtualenv

(dla instalacji Ubuntu 14.04 (zaufanej) python-virtualenv)

Zainstaluj virtualenvwrapper

Instalujemy także virtualenvwrapper, ponieważ oferuje ładne i proste polecenia do zarządzania środowiskami wirtualnymi. Istnieją dwa sposoby instalacji virtualenvwrapper:

Jako pakiet Ubuntu (od Ubuntu 16.04)

Biegać

sudo apt install virtualenvwrapper

następnie uruchomić

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

Korzystanie z pip

  1. Zainstaluj i / lub zaktualizuj pip

    Zainstaluj pip dla Python 2 przy pomocy

    sudo apt-get install python-pip

    lub dla Python 3

    sudo apt-get install python3-pip

    (jeśli używasz Python 3, być może będziesz musiał użyć pip3zamiast pipw dalszej części tego przewodnika).

    Opcjonalne (ale zalecane): Włącz autouzupełnianie bash dla pip

    Biegać

    pip completion --bash >> ~/.bashrc

    i uruchom, source ~/.bashrcaby włączyć.

  2. Zainstaluj virtualenvwrapper

    Ponieważ chcemy uniknąćsudo pip , instalujemy virtualenvwrapperlokalnie (domyślnie poniżej ~/.local) z:

    pip install --user virtualenvwrapper

    i

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. Źródło virtualenvwrapper w .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

Skonfiguruj virtualenv i virtualenvwrapper:

Najpierw eksportujemy WORKON_HOMEzmienną zawierającą katalog, w którym mają być przechowywane nasze środowiska wirtualne. Zróbmy to~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

teraz również utwórz ten katalog

mkdir $WORKON_HOME

i umieść ten eksport w naszym ~/.bashrcpliku, aby ta zmienna została automatycznie zdefiniowana

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

Możemy również dodać kilka dodatkowych sztuczek, takich jak poniższe, co zapewnia, że ​​jeśli pipstworzy dodatkowe środowisko wirtualne, zostanie ono również umieszczone w naszym WORKON_HOMEkatalogu:

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

Źródło ~ / .bashrc, aby załadować zmiany

source ~/.bashrc

Sprawdź, czy to działa

Teraz tworzymy nasze pierwsze wirtualne środowisko. -pArgument jest opcjonalny, jest on używany do ustawienia wersji Pythona w użyciu; może to być python3na przykład.

mkvirtualenv -p python2.7 test

Zobaczysz, że środowisko zostanie skonfigurowane, a twój monit zawiera teraz nazwę twojego aktywnego środowiska w nawiasach. Również jeśli teraz biegniesz

python -c "import sys; print sys.path"

powinieneś zobaczyć dużo, /home/user/.virtualenv/...ponieważ teraz nie używa twoich systemowych pakietów witryn.

Możesz dezaktywować swoje środowisko, uruchamiając

deactivate

a jeśli chcesz nad tym popracować, po prostu wpisz

workon test

Na koniec, jeśli chcesz usunąć swoje środowisko, wpisz

rmvirtualenv test

Cieszyć się!


Dzięki autorowi tego posta na blogu .

Gerhard Burger
źródło
2
python-pipi python-virtualenvmożna je zainstalować za pomocą repozytorium Ubuntu, bez potrzeby ręcznej instalacji.
Timo
2
Jednak w Ubuntu zalecamy pakiety Ubuntu z wielu powodów. Nie ma nic złego w starszych wersjach pip lub virtualenv, są one doskonale zdolne.
tumbleweed
1
@ GerhardBurger: Jeśli utworzysz virtualenv python3, otrzyma on pip działający w python3. Jeśli użyjesz virtualenv Ubuntu do stworzenia virtualenv, wszystko, co zrobiłeś, będzie zawarte w virtualenv. Jeśli zaczniesz sudo easy_installing stuff, spowoduje to bałagan w całym / usr / local, co nie jest łatwe do wyczyszczenia, bez większego zysku.
tumbleweed,
wygląda na to, że alias nie jest teraz potrzebny: --no-site-packagesjest domyślny i --distributeprzestarzały
int_ua
W przypadku, mkvirtualenv testgdy nie działa, zobacz także: stackoverflow.com/questions/15608236/…
Nikos Alexandris
8

Środowiska wirtualne oferują sposób zarządzania i izolowania zależności w zależności od projektu. Co więcej, unikają też całej sudo pip installsytuacji, która jest zagrożeniem bezpieczeństwa, jak wyjaśniłem w https://askubuntu.com/a/802594/15003 . Oficjalna dokumentacja Pythona zachęca również do korzystania ze środowisk wirtualnych .

Najłatwiejszym sposobem tworzenia i używania środowisk wirtualnych dla Python 2 i Python 3 jest instalacja virtualenvprzy użyciu aptlub apt-get. Dla każdego projektu w Pythonie utwórz virtualenv, a następnie aktywuj go. Zauważ, że virtualenv jest specyficzny dla konkretnej wersji Pythona. Po aktywacji użyj, pipaby zainstalować pakiety w języku Python, jak zwykle, niezależnie od tego, czy używasz języka Python 2, czy 3; nie ma potrzeby używania pip3Python 3. sudosłuży jedynie do instalacji virtualenvi nie jest używany z piptym, co pozwala uniknąć wyżej wspomnianego ryzyka bezpieczeństwa. Polecenia to:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package

Jeśli chcesz utworzyć virtualenv dla Python 3, zamień na virtualenv venv:

virtualenv venv -p python3

Przeczytaj więcej na temat różnych dzwonków i gwizdków virtualenvna https://virtualenv.pypa.io/en/stable/ .

edwinksl
źródło
1
sourceoszczędza mi wiele poleceń
vnpnlz
OSError: [Errno 40] Zbyt wiele poziomów dowiązań symbolicznych: '/ var / www / html / python / check / venv / bin / python'
Saravanan Nandhan
@SaravananNandhan Zamiast tego zadaj nowe pytanie z niezbędnymi szczegółami.
edwinksl
3

Z modułem venv dostępnym w Python 3.3 (i Ubuntu 15.10)

Środowiska wirtualne (venv) są tak popularne, że funkcjonalność jest teraz zawarta w samym pythonie (od wersji 3.3). Aby używać go w systemie Ubuntu, musisz zainstalować python3-venv(ponieważ ensurepipmoduł nie jest dostępny):

sudo apt-get install python3-venv

Następnie możesz użyć

pyvenv myvirtualenv

stworzyć wirtualne środowisko o nazwie myvirtualenv. Następnie możesz użyć

source myvirtualenv/bin/activate

aktywować środowisko wirtualne. Aby dezaktywować, po prostu wpisz

deactivate

EDIT:pyvenv skrypt została zastąpiona python3 -m venv. Zapobiega to nieporozumieniom co do tego, z którym pyvenvpołączony jest interpreter Pythona, a tym samym z jakiego interpretera Python będzie używane środowisko wirtualne. ( źródło )

Gerhard Burger
źródło