python - virtuel - virtualenv ubuntu




Utilisez une version différente de Python avec virtualenv (12)

J'ai un système Debian en cours d'exécution avec python 2.5.4. J'ai virtualenv correctement installé, tout fonctionne bien. Est-il possible que je peux utiliser un virtualenv avec une version différente de Python?

J'ai compilé Python 2.6.2 et je voudrais l'utiliser avec un peu de virtualenv. Est-il suffisant d'écraser le fichier binaire? Ou dois-je changer quelque chose par rapport aux bibliothèques?


Dans le sous-système Windows pour Linux:

  1. Créer un environnement pour python3:

    virtualenv --python=/usr/bin/python3 env
    
  2. Activez-le:

    source env/bin/activate
    

Ce sont des étapes lorsque vous êtes sur un environnement d'hébergement partagé et que vous devez installer Python à partir de la source, puis créer venv à partir de votre version Python. Pour Python 2.7.9, vous feriez quelque chose comme ceci:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

env virtuel

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

Naturellement, ceci peut s'appliquer à n'importe quelle situation où vous voulez répliquer l'environnement exact sur lequel vous travaillez et déployez.


Il y a un moyen plus facile,

virtualenv venv --python=python2.7

Merci à un commentaire, cela ne fonctionne que si vous avez installé python2.7 au niveau du système (par exemple /usr/bin/python2.7).

Sinon, si vous utilisez homebrew, vous pouvez utiliser le chemin pour vous donner ce que vous voulez.

virtualenv venv --python=/usr/local/bin/python

Vous pouvez trouver le chemin vers votre installation python avec

which python

Cela fonctionnera également avec python 3.

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

En fin de compte, se condenser pour:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`

L'approche -p fonctionne bien, mais vous devez vous rappeler de l'utiliser à chaque fois. Si votre objectif est de passer à une nouvelle version de Python en général, c'est une douleur et peut également conduire à des erreurs.

Votre autre option consiste à définir une variable d'environnement qui fait la même chose que -p . Définissez ceci via votre fichier ~/.bashrc ou partout où vous gérez des variables d'environnement pour vos sessions de connexion:

export VIRTUALENV_PYTHON=/path/to/desired/version

Ensuite, virtualenv l'utilisera chaque fois que vous ne spécifiez pas -p sur la ligne de commande.


Pour Mac (High Sierra), installez virtualenv dans python3 et créez un virtualenv pour python2:

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14

Sous Windows pour moi cela fonctionne:

virtualenv --python=c:\Python25\python.exe envname

sans le python.exe j'ai WindowsError: [Error 5] Access is denied J'ai Python2.7.1 installé avec virtualenv 1.6.1, et je voulais python 2.5.2.


Sur le mac, j'utilise pyenv et virtualenvwrapper. Je devais créer un nouveau virtualenv. Vous avez besoin d'homebrew que je suppose que vous avez installé si vous êtes sur un mac, mais juste pour le plaisir:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

J'ai également gelé mes exigences d'abord afin que je puisse simplement réinstaller dans le nouveau virtualenv avec:

pip install -r requirements.txt

Sur les fenêtres:

py -3.4x32 -m venv venv34

ou

py -2.6.2 -m venv venv26

Cela utilise le lanceur py qui trouvera le bon exécutable python pour vous (en supposant que vous l'avez installé).


Cela a fonctionné pour moi

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3

Oui , les réponses ci-dessus sont correctes et fonctionnent correctement sur les systèmes basés sur Unix comme Linux et MAC OS X.

J'ai essayé de créer virtualenv pour Python2 et Python3 avec les commandes suivantes.

Ici, j'ai utilisé venv2 & venv3 comme leurs noms respectifs pour Python2 et Python3 .

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 

Utilisez simplement l' --python (ou short -p ) lors de la création de votre instance virtualenv pour spécifier l'exécutable Python que vous voulez utiliser, par exemple:

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>

NB Pour Python 3.3 ou ultérieur, référez-vous à la answer d'Aelfinn ci-dessous. [NDLR: je sais que cela devrait normalement être un commentaire, pas un montage, mais un nouveau commentaire serait caché, et je viens de passer 45 minutes à démêler des erreurs parce que cette réponse importante était enterrée sous trois ou quatre réponses de perroquet. J'essaie juste de sauver tout le monde ici.]


virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>




virtualenvwrapper