Używanie Pythona 3 w virtualenv

Używając virtualenv , uruchamiam moje projekty z domyślną wersją Pythona (2.7). W jednym projekcie muszę użyć Pythona 3.4.

Użyłem brew install python3, aby zainstalować go na moim komputerze Mac. Jak utworzyć virtualenv, który używa nowej wersji?

Np. sudo virtualenv envPython3

Jeśli spróbuję:

virtualenv -p python3 test

Otrzymuję:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable
Author: Alan W. Smith, 2014-05-24

19 answers

Po prostu uruchom

virtualenv -p python3 envname

Update after op ' s edit:

Wystąpił błąd w wersji virtualenv OP, jak opisano tutaj . Problem został rozwiązany przez uruchomienie:

pip install --upgrade virtualenv
 974
Author: tbrisker,
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-05-24 09:39:10

Python 3 posiada wbudowaną obsługę środowisk wirtualnych - venv . Lepiej byłoby użyć tego zamiast tego. Odnosi się do docs:

Tworzenie wirtualnych środowisk odbywa się poprzez wykonanie pyvenv skrypt:

pyvenv /path/to/new/virtual/environment

Aktualizacja dla Pythona 3.6 i nowszych:

Jako pawciobiel poprawnie komentarze, pyvenv jest przestarzałe od Pythona 3.6, A nowy sposób to:

python3 -m venv /path/to/new/virtual/environment
 160
Author: geckon,
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-23 12:10:47

Wymagania wstępne instalacji.

sudo apt-get install python3 python3-pip virtualenvwrapper

Utwórz wirtualne środowisko oparte na Python3. Opcjonalnie włącz flagę --system-site-packages.

mkvirtualenv -p /usr/bin/python3 <venv-name>

Ustawić w środowisku wirtualnym.

workon <venv-name>

Zainstaluj inne wymagania używając menedżera pakietów pip.

pip install -r requirements.txt
pip install <package_name>

Podczas pracy nad wieloma projektami Pythona jednocześnie, zwykle zaleca się instalowanie popularnych pakietów, takich jak pdbpp globalnie, a następnie ponowne ich użycie w virtualenvs.

Użycie tej techniki oszczędza wiele czas spędzony na pobieraniu pakietów i ich instalowaniu, poza minimalnym zużyciem miejsca na dysku i przepustowości sieci.

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Instrukcje specyficzne dla Django

Jeśli jest wiele systemowych pakietów Pythona, to zaleca się nie używać znacznika --system-site-packages szczególnie podczas programowania, ponieważ zauważyłem, że spowalnia to uruchamianie Django. Zakładam, że inicjalizacja środowiska Django polega na ręcznym skanowaniu i dodawaniu wszystkich pakietów witryny ze ścieżki systemowej, która to może być powód. Nawet python manage.py shell staje się bardzo powolny.

Po tym eksperymencie, która opcja działa lepiej. Może być bezpiecznie po prostu pominąć flagę --system-site-packages dla projektów Django.

 45
Author: Sandeep,
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-10 09:40:10

Próbowałem pyenv i jest to bardzo przydatne do przełączania wersji Pythona (globalnej, lokalnej w folderze lub w virtualenv):

brew install pyenv

Następnie zainstaluj żądaną wersję Pythona:

pyenv install 3.5.0

I po prostu utwórz virtualenv ze ścieżką do wymaganej wersji interpretera:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

To jest to, sprawdź wersję:

. ./myenv/bin/activate && python -V

Są też pluginy do pyenv pyenv-virtualenv ale jakoś mi nie wyszło.

 38
Author: Johnner,
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-19 20:38:09
virtualenv --python=/usr/bin/python3 <name of env>
Zadziałało dla mnie.
 30
Author: bewithaman,
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-12-22 14:21:01

Możesz określić konkretne wersja Pythona podczas tworzenia środowiska.
Jest wymieniony w virtualenv.py

virtualenv --python=python3.5 envname

W niektórych przypadkach musi to być pełna ścieżka do pliku wykonywalnego:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

Jak działa -p

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)
 10
Author: KiranJasvanee,
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-07 22:50:33

Miałem tę samą wiadomość. rozwiązanie tbriskera nie zadziałało w moim przypadku. Zamiast tego rozwiązało to problem:

$ python3 -m venv .env
 9
Author: Aziz Alto,
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-11 01:59:32

Python jest teraz wyposażony w własną implementację środowiska wirtualnego o nazwie "venv". Sugerowałbym użycie tego, zamiast virtualenv.

Cytowanie z venv-docs ,

Przestarzałe od wersji 3.6: pyvenv był zalecanym narzędziem dla tworzenie środowisk wirtualnych dla Pythona 3.3 i 3.4 oraz jest przestarzały w Pythonie 3.6.

Zmienione w wersji 3.5: stosowanie venv jest teraz zalecane dla tworzenie wirtualnych środowisk.

Dla windows, aby zainicjować venv w jakimś projekcie, otwórz cmd:

python -m venv "c:\path\to\myenv"

(sugerowałoby użycie podwójnego cudzysłowu wokół ścieżki katalogu, jeśli zawiera spacje. Ex: "C:/My Dox / Spaced Directory / Something")

Po skonfigurowaniu venv, zobaczysz kilka nowych folderów w katalogu projektu. Jednym z nich byłyby "Skrypty".

Aby aktywować lub wywołać venv potrzebujesz:

C:\> <venv>\Scripts\activate.bat

Możesz dezaktywować środowisko wirtualne, wpisując "deactivate" w twoja skorupa. Dzięki temu jesteś teraz gotowy do zainstalowania bibliotek specyficznych dla Twojego projektu, które będą znajdować się w folderze "Lib".

================================ edytuj 1 ==================================== Scenariusz, który zostanie omówiony poniżej, nie jest tym, o co pierwotnie pytano, po prostu dodanie tego na wypadek, gdyby ktoś używał VSCode z rozszerzeniem Pythona

W przypadku, gdy używasz vs code z jego rozszerzeniem python, możesz napotkać problem z jego pylint, który wskazuje na globalny instalacja. W takim przypadku pylint nie będzie w stanie zobaczyć modułów zainstalowanych w środowisku wirtualnym, co spowoduje wyświetlenie błędów podczas importowania.

Tutaj {[7] } jest prostą metodą, aby o tym zapomnieć.

cd Workspace\Scripts
.\Activate.ps1
code .

Najpierw aktywujemy środowisko, a następnie wywołujemy vs-code, aby pylint zaczynał się w środowisku i mógł zobaczyć wszystkie lokalne Pakiety.

 7
Author: Blaze,
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-04-26 13:37:19

W python3. 6 próbowałem python3 -m venv myenv, zgodnie z dokumentacją, ale trwało to tak długo. Więc bardzo proste i szybkie polecenie jest python -m venv yourenv Zadziałało na python3. 6.

 7
Author: Sujeet Agrahari,
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-02-09 02:54:35

Oprócz innych odpowiedzi, zalecam sprawdzenie, jaką instancję virtualenv wykonujesz:

which virtualenv

Jeśli pojawi się coś w /usr / local / bin, to jest możliwe - nawet prawdopodobne-że zainstalowałeś virtualenv (prawdopodobnie używając instancji easy_tools lub pip) bez użycia menedżera pakietów systemu (brew w przypadku OP). To był mój problem.

Lata temu - kiedy byłem jeszcze bardziej ignorantem-zainstalowałem virtualenv i maskowało to mój system pakiet-dostarczony virtualenv.

Po usunięciu tego starego, zepsutego virtualenv, moje problemy zniknęły.

 6
Author: sage,
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-06-21 16:32:52

Na Macu musiałem wykonać następujące czynności, aby go uruchomić.

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
 4
Author: Stryker,
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-10-07 14:45:39

Jeśli zainstalujesz python3 (brew install python3) wraz z virtualenview , możesz wtedy wykonać mkvirtualenv -p $(which python3) env_name

Oczywiście, wiem, że virtualenview to tylko wrapper, ale dobrze mi służył przez lata, redukując kilka krzywych uczenia się.

 3
Author: Antony,
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-01-15 03:42:59

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME> to doda python3 ścieżka dla Twojego wirtualnego środowiska.

 3
Author: Hardik Gajjar,
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-01 07:21:17

To działało dla mnie

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
2015-10-09 07:11:29

Dla tych, którzy mają problemy podczas pracy z Anaconda3 (Python 3).

You could use

conda create -n name_of_your_virtualenv python=python_version 

Aby aktywować środowisko (Linux, MacOS)

source activate name_of_your_virtualenv

Dla Windows

activate name_of_your_virtualenv
 2
Author: 2324,
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-20 14:49:30

Próbowałem wszystkich powyższych rzeczy, nadal nie działa. Więc jako brutalna siła, właśnie ponownie zainstalowałem anacondę, ponownie zainstalowałem virtualenv... i zadziałało.

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 
 1
Author: Aman Madan,
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-30 13:24:18

Chciałem zachować Pythona 2.7.5 jako domyślną wersję na Centos 7, ale mam Pythona 3.6.1 w środowisku wirtualnym działającym obok innych środowisk wirtualnych w Pythonie 2.x

Znalazłem poniższy link najlepsze rozwiązanie dla najnowszej wersji Pythona (python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3. Pokazuje kroki dla różnych platform, ale podstawowe kroki are

  1. Zainstaluj python3.x (jeśli nie występuje) dla Twojej platformy
  2. Zainstaluj python3.x-devel dla Twojej platformy
  3. tworzenie środowiska wirtualnego w Pythonie 3.x (na przykład $ python3 .6-m venv_test_p3/ )
  4. Aktywuj testenvironment dla Pythona 3.x (na przykład źródło virenv_test_p3 / bin / activate)
  5. zainstaluj pakiety, których chcesz użyć w nowym środowisku wirtualnym python 3 i które są obsługiwane ( na przykład pip install Django==1.11.2)
 0
Author: Gunnar Sigfusson,
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-06-28 10:39:21

Mam ten sam błąd, ponieważ jest to konflikt z instalacją miniconda3, więc po wpisaniu "which virtualenv" i jeśli zainstalowałeś minicondę i wskazuje na tę instalację, możesz ją usunąć(jeśli lubisz mnie i nie przeniosłeś się do niej jeszcze) lub zmienić zmienną środowiskową, aby wskazać instalację, którą chcesz.

 0
Author: PrincessPea,
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-08-16 23:35:33

Dla tych z Was, którzy używają pipenv i chcą zainstalować konkretną wersję:

pipenv install --python 3.6
 0
Author: Vlad Bezden,
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-29 15:34:40