Vraag Hoe een virtuele python-omgeving in Ubuntu opzetten en gebruiken?


Python virtuele omgevingen worden gebruikt om geïsoleerde python-omgevingen te creëren om afhankelijkheid en versieconflicten te voorkomen, en ook indirect zorgen voor toestemmingsproblemen. Maar wat is de gemakkelijkste manier om het op te zetten en te gebruiken in Ubuntu?


66
2018-01-18 14:23


oorsprong




antwoorden:


Met virtualenvwrapper (gebruiksvriendelijke wrappers voor de functionaliteit van virtualenv)

Virtualenv installeren

Installeren virtualenv met

sudo apt-get install virtualenv

(voor Ubuntu 14.04 (betrouwbaar) installeren python-virtualenv)

Installeer virtualenvwrapper

De reden waarom we ook installeren virtualenvwrapper is omdat het mooie en eenvoudige commando's biedt om je virtuele omgevingen te beheren. Er zijn twee manieren om te installeren virtualenvwrapper:

Als Ubuntu-pakket (vanaf Ubuntu 16.04)

Rennen

sudo apt install virtualenvwrapper

ren dan

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

Pip gebruiken

  1. Installeer en / of update pip

    Installeer pip voor Python 2 met

    sudo apt-get install python-pip
    

    of voor Python 3

    sudo apt-get install python3-pip
    

    (als u Python 3 gebruikt, moet u wellicht gebruiken pip3 in plaats van pip in de rest van deze gids).

    Optioneel (maar aanbevolen): Schakel bash autocomplete in voor pip

    Rennen

    pip completion --bash >> ~/.bashrc
    

    en loop source ~/.bashrc in staat te stellen.

  2. Installeer virtualenvwrapper

    Omdat we willen vermijden sudo pip we installeren virtualenvwrapper lokaal (standaard onder ~/.local) met:

    pip install --user virtualenvwrapper
    

    en

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
    
  3. Bron virtualenvwrapper in .bashrc

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

Virtualenv en virtualenvwrapper instellen:

Eerst exporteren we het WORKON_HOME variabele die de map bevat waarin onze virtuele omgevingen moeten worden opgeslagen. Laten we dit maken ~/.virtualenvs

export WORKON_HOME=~/.virtualenvs

maak nu nu deze map aan

mkdir $WORKON_HOME

en zet deze export in onze ~/.bashrc bestand, zodat deze variabele automatisch wordt gedefinieerd

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

We kunnen er ook wat aan toevoegen extra tricks zoals het volgende, wat ervoor zorgt dat als pip creëert een extra virtuele omgeving, deze wordt ook in onze WORKON_HOME directory:

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

Source ~ / .bashrc om de wijzigingen te laden

source ~/.bashrc

Test of het werkt

Nu maken we onze eerste virtuele omgeving. De -p argument is optioneel, het wordt gebruikt om de Python-versie in te stellen; het kan ook zijn python3 bijvoorbeeld.

mkvirtualenv -p python2.7 test

U zult zien dat de omgeving zal worden ingesteld en uw prompt bevat nu de naam van uw actieve omgeving tussen haakjes. Ook als je nu loopt

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

je zou er veel van moeten zien /home/user/.virtualenv/... omdat het uw systeemwebsite-pakketten nu niet gebruikt.

U kunt uw omgeving deactiveren door te draaien

deactivate

en als je er weer aan wilt werken, typ dan gewoon

workon test

Als u tenslotte uw omgeving wilt verwijderen, typt u

rmvirtualenv test

Genieten!


Dank aan de auteur van deze blogpost.


93
2018-01-18 14:23



python-pip en python-virtualenv zijn installeerbaar via de Ubuntu-repsitory, manuele installatie is niet nodig. - Timo
In Ubuntu bevelen we Ubuntu-pakketten echter om vele redenen aan. Er is niets mis met oudere versies van pip of virtualenv, ze zijn perfect in staat. - tumbleweed
@GerhardBurger: als je een python3 virtualenv maakt, krijgt het een pip die werkt in python3. Als u de virtualenv van Ubuntu gebruikt om virtualenv te maken, wordt alles wat u hebt gedaan opgenomen in de virtualenv. Als je sudo easy_installing dingen begint, zal het een zooitje maken over / usr / local, dat is niet-triviaal om op te ruimen, zonder veel winst. - tumbleweed
Het lijkt erop dat alias nu niet nodig is: --no-site-packages is standaard en --distribute verouderd - int_ua
In geval dat mkvirtualenv test werkt niet, zie ook: stackoverflow.com/questions/15608236/... - Nikos Alexandris


Virtuele omgevingen bieden een manier voor het beheren en isoleren van afhankelijkheden per project. Bovendien vermijden ze ook het geheel sudo pip install situatie, wat een beveiligingsrisico is zoals ik heb uitgelegd in https://askubuntu.com/a/802594/15003. De officiële Python-documentatie ook moedigt het gebruik van virtuele omgevingen aan.

De eenvoudigste manier om virtuele omgevingen te maken en te gebruiken voor zowel Python 2 als Python 3 is om te installeren virtualenvgebruik makend van apt of apt-get. Maak voor elk Python-project een virtualenv en activeer deze vervolgens. Merk op dat de virtualenv specifiek is voor een bepaalde Python-versie. Na activering gebruiken pip om Python-pakketten zoals gewoonlijk te installeren, ongeacht of u Python 2 of 3 gebruikt; het is niet nodig om te gebruiken pip3 voor Python 3. sudo wordt alleen gebruikt om te installeren virtualenv en wordt niet gebruikt met pip, waardoor het bovengenoemde veiligheidsrisico wordt vermeden. De commando's om dit te doen zijn:

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

Als je een virtualenv voor Python 3 wilt maken, vervang je virtualenv venv met:

virtualenv venv -p python3

Lees meer over verschillende toeters en bellen virtualenv op https://virtualenv.pypa.io/en/stable/.


8
2018-06-13 21:57



source bespaart mij veel opdrachten - vnpnlz
OSError: [Errno 40] Te veel niveaus van symbolische koppelingen: '/ var / www / html / python / check / venv / bin / python' - Saravanan Nandhan
@SaravananNandhan Stel in plaats daarvan een nieuwe vraag met de nodige gegevens. - edwinksl


Het is gemakkelijk, je installeert python-virtualenv. Vervolgens kunt u een virtualenv maken met de virtualenv opdracht. Zien hun documentatie voor meer.


4
2018-01-18 20:11





Met de Venv-module verkrijgbaar bij Python 3.3 (en Ubuntu 15.10)

Virtuele omgevingen (Venv's) zijn zo populair dat de functionaliteit nu is opgenomen in Python zelf (vanaf 3.3). Om het te gebruiken op Ubuntu moet je installeren python3-venv (sinds de ensurepip module is niet beschikbaar):

sudo apt-get install python3-venv

Daarna kunt u gebruiken

pyvenv myvirtualenv

om een ​​virtuele omgeving genaamd te creëren myvirtualenv. Je kunt dan gebruiken

source myvirtualenv/bin/activate

om de virtuele omgeving te activeren. Om te deactiveren, typt u gewoon

deactivate

BEWERK:  De pyvenv script is verouderd ten gunste van python3 -m venv. Dit voorkomt verwarring over wat Python interpreteert pyvenv is verbonden met en dus welke Python-interpreter wordt gebruikt door de virtuele omgeving. (bron)


3
2018-06-20 18:21