/ / virtualenv na macOS używa nieistniejącego interpretera python - python, macos, virtualenv, homebrew

virtualenv na macOS używa nieistniejącego python interpretera - python, macos, virtualenv, homebrew

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 № 1

Winę 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.