Uruchamianie `#! / Usr / bin / env python` w systemie Windows


14

Używam Bash na Windowsie, dostarczonym przez MSYS.

Próbowałem uruchomić plik Python z shebang #!/usr/bin/env python, ale pojawia się ten komunikat o błędzie:

/usr/bin/env: python: No such file or directory

Co mogę zrobić, aby to zadziałało?

Wiem, że mogę uruchomić plik Python, dodając do niego sufiks python, ale chcę, aby działał również bez sufiksu.

Odpowiedzi:


8

Zamiast tego użyj właściwej ścieżki, w której jest zainstalowany Python, na przykład:

#!c:/Python/python.exe

Jeśli masz w systemie obsługę ścieżek uniksopodobnych (nie znam MSYS), zawsze możesz wprowadzić ścieżkę do pythonpliku wykonywalnego, tj. Wyjścia which python.


2
Lub możesz użyć env, tak jak pytający.
Ignacio Vazquez-Abrams

Nie mogę zmienić shebang, jest to część projektu, w który zaangażowani są inni programiści pracujący w systemach Linux i Mac.
Ram Rachum,

@RamRachum Co znajduje się wyjście which envi which pythoni type python?
Daniel Beck


0

Co się stanie po uruchomieniu (z powłoki):

$ /usr/bin/env python

..?

Jeśli rozpocznie interaktywną sesję Pythona, można go znaleźć. (Możesz także po prostu uruchomić:) type python. Jeśli drukuje „nie ma takiego pliku lub katalogu”, pythonto nie znajduje się w ŚCIEŻCE. Sprawdź, czy można poprawić następujące elementy, aby rozwiązać problem (spacje w ścieżce / do / python prawdopodobnie spowodują problemy):

$ export PATH=$PATH:/path/to/python
$ /usr/bin/env python

0

Okazało się, że istnieje rozbieżność między activate.shplikiem Virtualenv a MSYSGIT. Nigdy nie miał działać w systemie Windows.


0

Najnowsze wersje systemu Windows 10 obsługują instalowanie podsystemów Linux. Jeśli uciekniesz stamtąd, ścieżki powinny być poprawne.

Powinno to być działające rozwiązanie, jeśli nie masz nic przeciwko temu.


0

Przyczyną problemu jest to, że spacje w shebangach są interpretowane jako dostarczające dodatkowe argumenty do pliku wykonywalnego, więc C:\Program Files\Python\python.exesą postrzegane jako C:\Programpodane Files\Python\python.exejako argument.

Najlepszym rozwiązaniem tego jest, ponieważ Windows LOVES spacje w $HOMEkatalogu i Program Filesinnych miejscach, nawet jeśli naprawdę może to popsuć w cmd.exe oraz Powershell i innych narzędziach:

Zainstaluj Python C:\Pythoni dodaj C:\Pythonfolder, w którym python.exemieszka, oraz Scriptskatalog, który w nim mieszka, do PATHzmiennej środowiskowej na poziomie systemu lub użytkownika.

Jeśli potrzebujesz Python 2.7.x 3.x współistnieć, zainstalować je C:\Python27i C:\Python36i C:\Python37i zmienić nazwę python.exena python2.exe, python36.exe, python37.exe, etc i dodać każdy z tych folderów i ich Scriptsfoldery do PATH. Możesz określić, która z wersji Pythona 3 ma być „domyślna”, a także wykonać kopię w tym folderze, python3.exeaby obsłużyć wszystkie używane skrypty !#/usr/bin/env python3.

Jeśli w katalogu domowym użytkownika znajduje się spacja, mogą wystąpić problemy, jeśli użyjesz pip install --user somepackageskładni. W --userdomyślnie do katalogu domowego, a przestrzeń wyłączy się, co w tym przypadku również. To obejście jest opisane tutaj, ale sprowadza się do wyeksportowania PYTHONUSERBASE do twojego środowiska.

export PYTHONUSERBASE=/myappenv
pip install --user SomePackage

lub w systemie Windows (Powershell):

$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.