Pomocí virtualenv spouštím své projekty s výchozí verzí Pythonu (2.7). V jednom projektu potřebuji použít Python 3.4.
K jeho instalaci na Mac jsem použil brew install python3
. Jak nyní vytvořím virtualenv, které používá novou verzi?
Např. sudo virtualenv envPython3
Když zkusím:
virtualenv -p python3 test
Dostanu:
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
jednoduše spustit
virtualenv -p python3 envname
Aktualizace po úpravě OP's:
V OP's verzi virtualenv byla chyba, jak je popsáno zde. Problém byl odstraněn spuštěním:
pip install --upgrade virtualenv
Python 3 má vestavěnou podporu pro virtuální prostředí - venv. Možná by bylo lepší použít místo toho toto prostředí. S odkazem na dokumentaci:
Vytvoření virtuálních prostředí se provádí příkazem pyvenv
skript:
pyvenv /path/to/new/virtual/environment
Aktualizace pro Python 3.6 a novější:
Jak pawciobiel správně komentuje, pyvenv
je zastaralé od verze Python 3.6 a nový způsob je:
python3 -m venv /path/to/new/virtual/environment
Kromě ostatních odpovědí doporučuji zkontrolovat, jakou instanci virtualenv spouštíte:
which virtualenv
Pokud to ukáže něco v /usr/local/bin, pak je možné - dokonce pravděpodobné - že jste nainstalovali virtualenv (možná pomocí instance easy_tools nebo pip), aniž byste použili systémového správce balíčků (v případě OP brew). To byl můj problém.
Před lety - když jsem byl ještě větší ignorant - jsem si nainstaloval virtualenv a ten maskoval můj systémový'virtualenv poskytovaný balíčky.
Po odstranění tohoto starého, nefunkčního virtualenv mé problémy zmizely.