Usando virtualenv, eseguo i miei progetti con la versione predefinita di Python (2.7). Su un progetto, ho bisogno di usare Python 3.4.
Ho usato brew install python3
per installarlo sul mio Mac. Ora, come faccio a creare un virtualenv che usi la nuova versione?
ad esempio sudo virtualenv envPython3
Se provo:
virtualenv -p python3 test
ottengo:
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
semplicemente eseguire
virtualenv -p python3 envname
Aggiornamento dopo la modifica di OP's:
C'era un bug nella versione di virtualenv dell'OP, come descritto qui. Il problema è stato risolto eseguendo:
pip install --upgrade virtualenv
Python 3 ha un supporto integrato per gli ambienti virtuali - venv. Potrebbe essere meglio usare quello invece. Facendo riferimento alla documentazione:
La creazione di ambienti virtuali è fatta eseguendo lo script pyvenv lo script:
pyvenv /path/to/new/virtual/environment
.
Aggiornamento per Python 3.6 e successivi:
Come pawciobiel correttamente commenta, pyvenv
è deprecato a partire da Python 3.6 e il nuovo modo è:
python3 -m venv /path/to/new/virtual/environment
Oltre alle altre risposte, vi consiglio di controllare quale istanza di virtualenv state eseguendo:
which virtualenv
Se si scopre qualcosa in /usr/local/bin, allora è possibile - anche probabile - che tu abbia installato virtualenv (possibilmente usando un'istanza di easy_tools o pip) senza usare il gestore di pacchetti del tuo sistema (brew nel caso di OP). Questo era il mio problema.
Anni fa - quando ero ancora più ignorante - avevo installato virtualenv e questo mascherava il virtualenv fornito dal mio sistema.
Dopo aver rimosso questo vecchio e rotto virtualenv, i miei problemi sono andati via.