Użyj innej wersji Pythona z virtualenv

Mam obecnie system Debiana z Pythonem 2.5.4. Mam poprawnie zainstalowany virtualenv, wszystko działa dobrze. Czy jest możliwość, że mogę używać virtualenv z inną wersją Pythona?

Skompilowałem Pythona 2.6.2 i chciałbym go używać z jakimś virtualenv. Czy wystarczy nadpisać plik binarny? A może muszę coś zmienić w stosunku do bibliotek?

Author: bias, 2009-10-08

19 answers

Po prostu użyj opcji --python (lub short -p) podczas tworzenia instancji virtualenv, aby określić plik wykonywalny Pythona, którego chcesz użyć, np.:

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

Uwaga dla Python 3.3 lub później, zapoznaj się z odpowiedzią Aelfinn poniżej. [uwaga redaktora: wiem, że normalnie powinien to być komentarz, a nie edycja, ale nowy komentarz byłby Ukryty, a ja właśnie spędziłem 45 minut na rozwiązywaniu błędów, ponieważ ta ważna odpowiedź została zakopana pod trzema lub czterema papugami odpowiedzi. Ja tylko staram się oszczędzić wszystkim czas.]

 1207
Author: Daniel Roseman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-16 21:12:11

Są to kroki, gdy jesteś na współdzielonym środowisku hostingowym i musisz zainstalować & kompilować Python ze źródła, a następnie utworzyć venv z wersji Pythona. Dla Pythona 2.7.9 można by zrobić coś w ten sposób:

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

Virtual env

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   

Oczywiście może to mieć zastosowanie w każdej sytuacji, w której chcesz odtworzyć dokładnie środowisko, w którym pracujesz i wdrażasz.

 167
Author: zzart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-01 10:25:05

UPDATE: dla Python3. 6, poniższy skrypt pyvenv jest przestarzały. Zamiast, dokumenty Pythona sugerują utworzenie środowiska wirtualnego za pomocą następującego polecenia:

python3 -m venv <myenvname>

Dla python3 (3.3+) użyj powyższej metody lub skryptu pyvenv dowództwo.

pyvenv /path/to/new/virtual/environment

Należy pamiętać, że venv nie pozwala na tworzenie virtualenv z innymi wersjami Pythona. W tym celu zainstaluj i użyj virtualenv pakiet .

 145
Author: The Aelfinn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-02 21:56:45
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
 93
Author: iElectric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-08 23:53:53

Pod Windows dla mnie to działa:

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

Bez python.exe mam WindowsError: [Error 5] Access is denied Mam Python2.7. 1 zainstalowany z virtualenv 1.6.1 i chciałem Pythona 2.5.2.

 63
Author: balazs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-31 21:04:32

Jest łatwiejszy sposób,

virtualenv venv --python=python2.7

Dzięki komentarzowi działa to tylko wtedy, gdy masz zainstalowany python2.7 na poziomie systemu (np. /usr/bin/python2.7).

W przeciwnym razie, jeśli używasz homebrew, możesz użyć ścieżki, aby dać ci to, czego chcesz.

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

Możesz znaleźć ścieżkę do instalacji Pythona za pomocą

which python

Będzie to również działać z Pythonem 3.

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

Ostatecznie kondensacja do:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`
 59
Author: Daniel Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-24 07:28:36

Mac OSX 10.6.8 (Snow Leopard):

1) gdy wykonasz pip install virtualenv, polecenie pip jest powiązane z jedną z Twoich wersji Pythona, a virtualenv zostanie zainstalowane w tej wersji Pythona. Możesz zrobić

 $ which pip   

Aby zobaczyć, jaka to wersja Pythona. Jeśli widzisz coś w stylu:

 $ which pip
 /usr/local/bin/pip

To zrób:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Możesz zobaczyć wersję Pythona w wyjściu.

Domyślnie będzie to wersja Pythona używana w każdym nowym środowisku, które tworzysz. Można jednak określić dowolną wersję Pythona zainstalowaną na komputerze do użycia w nowym środowisku za pomocą -p flag:

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env utworzy folder w bieżącym katalogu, który będzie zawierać pliki wykonywalne Pythona oraz kopię pip [polecenie], którego można użyć do instalacji innych pakietów.

Http://docs.python-guide.org/en/latest/dev/virtualenvs/

virtualenv wystarczy skopiować Pythona z miejsca na komputerze do nowo utworzony katalog my_env / bin/.

2) system python jest w /usr/bin, podczas gdy różne wersje Pythona, które zainstalowałem, były domyślnie zainstalowane w:

 /usr/local/bin

3) różne pythony, które zainstalowałem, mają nazwy takie jak python2.7 lub python3.2 i mogę używać tych nazw zamiast pełnych ścieżek.

========VIRTUALENVWRAPPER=========

1) miałem problemy z uruchomieniem virtualenvwrapper. To właśnie wrzucam ~/.bash_profile:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2) -p option działa inaczej z virtualenvwrapper: muszę określić pełną ścieżkę do interpretera Pythona, który będzie używany w nowym środowisku (kiedy nie chcę używać domyślnej wersji Pythona):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

W przeciwieństwie do virtualenv, virtualenvwrapper utworzy środowisko w miejscu określonym przez zmienną środowiskową $ WORKON_HOME. Dzięki temu wszystkie środowiska są w jednym miejscu.

 27
Author: 7stud,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-16 02:49:52

Załóżmy, że aktualnie masz zainstalowany python 2.7 w virtualenv. Ale chcesz skorzystać z python3.2, musisz zaktualizować to za pomocą:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

Następnie aktywuj swój virtualenv przez:

$ source activate name_of_your_virtualenv

A następnie wykonaj: python --version w powłoce, aby sprawdzić, czy Twoja wersja jest teraz aktualizowana.

 17
Author: kmario23,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-08 18:29:34

Możesz wywołać virtualenv z żądaną wersją Pythona. Na przykład:

python3 -m virtualenv venv

Lub alternatywnie bezpośrednio wskaż ścieżkę virtualenv. np. Dla windows:

c:\Python34\Scripts\virtualenv.exe venv

I biegnąc:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

Możesz zobaczyć wersję Pythona zainstalowaną w środowisku wirtualnym

 10
Author: Nima Soroush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 13:03:03

Podejście -p działa dobrze, ale musisz pamiętać, aby używać go za każdym razem. Jeśli twoim celem jest przejście na nowszą wersję Pythona, jest to ból i może również prowadzić do błędów.

Inną opcją jest ustawienie zmiennej środowiskowej, która robi to samo co -p. Ustaw to za pomocą pliku ~/.bashrc lub gdziekolwiek zarządzasz zmiennymi środowiskowymi dla sesji logowania:

export VIRTUALENV_PYTHON=/path/to/desired/version

Wtedy virtualenv użyje tego za każdym razem, gdy nie podasz -p w poleceniu Kolejka

 7
Author: Chris Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-05 20:57:44

Na Macu używam pyenv i virtualenvwrapper. Musiałem stworzyć nowy virtualenv. Potrzebujesz homebrew, który zakładam, że masz zainstalowany, jeśli jesteś na Macu, ale dla Zabawy: {]}

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}

Najpierw zamroziłem moje wymagania, więc mogłem po prostu ponownie zainstalować w nowym virtualenv za pomocą:

pip install -r requirements.txt
 6
Author: silverdagger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-04 21:03:08

Jeszcze łatwiej, używając zastępowania poleceń, aby znaleźć python2 dla Ciebie:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

Lub podczas korzystania z virtualenvwrapper:

mkvirtualenv -p $(which python2) <env_name>

 6
Author: Gerard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-19 13:28:50

W podsystemie windows dla Linuksa:

  1. Tworzenie środowiska dla python3:

    virtualenv --python=/usr/bin/python3 env
    
  2. Aktywuj go:

    source env/bin/activate
    
 4
Author: Marcin Rapacz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-26 11:45:41

Te dwie komendy powinny działać dobrze dla początkujących

virtualenv -p python2 myenv (dla python2)

virtualenv -p python3 myenv (dla python3)

 4
Author: Sachin Kolige,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 10:03:25

Dla komputerów Mac (High Sierra) zainstaluj virtualenv w python3 i utwórz virtualenv dla python2:

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
 3
Author: Howe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-24 00:30:05

To działało dla mnie

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
 2
Author: Dadaso Zanzane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 06:53:41

Tak , powyższe odpowiedzi są poprawne i działa dobrze na systemach opartych na Uniksie, takich jak Linux & MAC OS X .

Próbowałem stworzyć virtualenv dla Python2 & Python3 z następującymi poleceniami.

Tutaj użyłem venv2 & venv3 jako ich nazwy dla Python2 & Python3

Python2 "

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$ 

Python3 "

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$ 

Sprawdzanie lokalizacji instalacji Pythona

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$ 
 2
Author: hygull,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-30 07:42:05

W systemie windows:

py -3.4x32 -m venv venv34

Lub

py -2.6.2 -m venv venv26

To wykorzystuje py launcher który znajdzie odpowiedni dla Ciebie program wykonywalny Pythona (zakładając, że masz go zainstalowanego).

 1
Author: jnnnnn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-17 23:22:22
virtualenv -p python3 myenv

Link do tworzenia virtualenv

 1
Author: Aseem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 08:51:50