Membuat `#! / Usr / bin / env python` berfungsi di Windows


14

Saya menggunakan Bash pada Windows, yang disediakan oleh MSYS.

Saya mencoba menjalankan file Python dengan shebang #!/usr/bin/env python, tapi saya mendapatkan pesan kesalahan ini:

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

Apa yang bisa saya lakukan untuk membuat ini bekerja?

Saya tahu saya bisa meluncurkan file Python dengan suffix dengan python, tapi saya ingin itu berfungsi tanpa suffix juga.

Jawaban:


8

Gunakan jalur yang tepat tempat Python diinstal, misalnya:

#!c:/Python/python.exe

Jika Anda memiliki dukungan jalur seperti Unix pada sistem Anda (saya tidak terbiasa dengan MSYS), Anda selalu dapat memasukkan jalur ke pythonexecutable Anda , yaitu output dari which python.


2
Atau Anda bisa menggunakan env, seperti yang dilakukan penanya.
Ignacio Vazquez-Abrams

Saya tidak dapat mengubah shebang, itu bagian dari proyek yang melibatkan programmer lain yang bekerja di Linux dan Mac.
Ram Rachum

@RamRachum Apa output dari which envdan which pythondan type python?
Daniel Beck


0

Apa yang terjadi ketika Anda menjalankan (dari shell):

$ /usr/bin/env python

..?

Jika memulai sesi python interaktif, maka python dapat ditemukan. (Anda juga dapat menjalankan:) type python. Jika ia mencetak "tidak ada file atau direktori", maka pythontidak ditemukan di PATH Anda. Lihat apakah hal berikut dapat di-tweak untuk memperbaiki masalah (spasi di path / ke / python mungkin akan menyebabkan masalah):

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

0

Saya ternyata tidak cocok antara activate.shfile Virtualenv dan MSYSGIT. Itu tidak pernah dimaksudkan untuk bekerja di Windows.


0

Versi terbaru Windows 10 mendukung pemasangan subsistem Linux. Jika Anda lari dari sana, jalan harus benar.

Ini harus menjadi solusi yang berfungsi jika Anda baik-baik saja dengan menjalankannya seperti itu.


0

Akar masalahnya adalah bahwa ruang di shebang ditafsirkan sebagai memasok argumen tambahan untuk dieksekusi, sehingga C:\Program Files\Python\python.exedilihat sebagai C:\Programdiberikan Files\Python\python.exesebagai argumen.

Solusi terbaik untuk ini, karena Windows MENCINTAI ruang di $HOMEdirektori dan Program Filesdan tempat-tempat lain meskipun itu benar-benar dapat memecahkan hal-hal di cmd.exe dan Powershell dan alat lainnya, adalah:

Instal Python ke C:\Pythondan tambahkan C:\Pythonfolder tempat python.exetinggal dan Scriptsdirektori yang tinggal di dalamnya ke PATHvariabel lingkungan Anda di tingkat sistem atau pengguna.

Jika Anda membutuhkan Python 2.7.x dan 3.x untuk co-ada, menginstal mereka ke dalam C:\Python27dan C:\Python36dan C:\Python37dan mengubah nama python.exeuntuk python2.exe, python36.exe, python37.exe, dll dan menambahkan masing-masing folder dan mereka Scriptsfolder ke dalam PATH. Anda mungkin ingin menentukan versi Python 3 mana yang Anda inginkan sebagai "default" dan juga membuat salinan di folder itu python3.exeuntuk menangani skrip apa pun yang digunakan !#/usr/bin/env python3.

Jika direktori home pengguna Anda memiliki ruang di dalamnya, Anda juga dapat mengalami masalah jika Anda menggunakan pip install --user somepackagesintaks. The --userdefault ke direktori home Anda, dan ruang akan perjalanan hal-hal dalam kasus ini juga. Solusinya dijelaskan di sini tetapi bermuara pada mengekspor PYTHONUSERBASE ke lingkungan Anda.

export PYTHONUSERBASE=/myappenv
pip install --user SomePackage

atau di Windows (Powershell):

$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.