Quando corro virtualenv
, Ho capito:
$ virtualenv
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory
virtualenv
solo iniziato a comportarsi in questo modo oggi. Ha funzionato ieri. Si rompe perché virtualenv
è uno script Python che utilizza un interprete Python inesistente:
$ head -1 $(which virtualenv)
#!/usr/local/opt/python/bin/python2.7
Sulla mia macchina, /usr/local/opt/python
è un collegamento simbolico a una directory Python 3.6:
$ ls -l /usr/local/opt/python
lrwxr-xr-x 1 jim admin 24 2 Mar 13:45 /usr/local/opt/python -> ../Cellar/python/3.6.4_3
Come previsto, la directory Python 3.6 non contiene a bin/python2.7
:
$ ls /usr/local/Cellar/python/3.6.4_3/bin/
2to3 idle pip3 pydoc3.6 python3-config python3.6m-config wheel3
2to3-3.6 idle3 pip3.6 python python3.6 pyvenv
easy_install idle3.6 pydoc python-config python3.6-config pyvenv-3.6
easy_install-3.6 pip pydoc3 python3 python3.6m wheel
virtualenv
chiaramente si aspetta /usr/local/opt/python
per contenere materiale Python 2, ma contiene solo materiale Python 3.
Mio /usr/local/opt/python
è gestito da Homebrew. Non conosco la provenienza del mio virtualenv
. Come faccio a sapere dove sono i miei /usr/local/bin/virtualenv
venire da?
Quale è la colpa? Mio virtualenv
o Homebrew?
risposte:
3 per risposta № 1La colpa di questo è con pip
, non Homebrew. Mio /usr/local/bin/virtualenv
venire da pip install virtualenv
, che incorpora un link assoluto all'interprete Python al momento dell'installazione! ho aperto un problema su questo comportamento unidiomatico.