Kiedy biegnę virtualenv
, Rozumiem:
$ virtualenv
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory
virtualenv
tylko zaczęło się dziś tak zachowywać. To działało wczoraj. Przerywa, ponieważ virtualenv
jest skryptem Pythona używającym nieistniejącego interpretera Pythona:
$ head -1 $(which virtualenv)
#!/usr/local/opt/python/bin/python2.7
Na mojej maszynie /usr/local/opt/python
jest dowiązaniem symbolicznym do katalogu 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
Zgodnie z oczekiwaniami katalog Python 3.6 nie zawiera pliku 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
wyraźnie oczekuje /usr/local/opt/python
zawierać materiał Python 2, ale zawiera tylko materiał Python 3.
Mój /usr/local/opt/python
jest zarządzany przez Homebrew. Nie znam pochodzenia mojego virtualenv
. Jak mogę się dowiedzieć, gdzie moje /usr/local/bin/virtualenv
pochodzi z?
Które jest winne? Mój virtualenv
lub Homebrew?
Odpowiedzi:
3 dla odpowiedzi № 1Winę za to ponosi pip
, nie Homebrew. Mój /usr/local/bin/virtualenv
pochodzi z pip install virtualenv
, który umieszcza bezwzględne łącze do interpretera Pythona w czasie instalacji! otworzyłem problem dotyczący tego zachowania unidiomatycznego.