ทำให้ `#! / usr / bin / env python` ทำงานบน Windows


14

ฉันใช้ Bash บน Windows จัดทำโดย MSYS

ฉันพยายามเรียกใช้ไฟล์ Python ด้วย shebang ของ#!/usr/bin/env pythonแต่ฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

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

ฉันจะทำอะไรได้บ้างเพื่อให้งานนี้สำเร็จ

ฉันรู้ว่าฉันสามารถเปิดใช้งานไฟล์ Python ได้ด้วยการต่อท้ายด้วยpythonแต่ฉันต้องการให้มันทำงานโดยไม่มีคำต่อท้ายด้วย

คำตอบ:


8

ใช้พา ธ ที่เหมาะสมที่ติดตั้ง Python แทนเช่น:

#!c:/Python/python.exe

ถ้าคุณมียูนิกซ์เช่นการสนับสนุนเส้นทางในระบบของคุณ (ฉันไม่คุ้นเคยกับ MSYS) คุณสามารถป้อนเส้นทางไปยังคุณปฏิบัติการเช่นการส่งออกของpythonwhich python


2
หรือคุณสามารถใช้envในขณะที่ผู้ถามกำลังทำอยู่
Ignacio Vazquez-Abrams

ฉันไม่สามารถเปลี่ยน Shebang ได้เป็นส่วนหนึ่งของโครงการที่เกี่ยวข้องกับโปรแกรมเมอร์คนอื่น ๆ ที่ทำงานบน Linux และ Mac
Ram Rachum

คือการส่งออกของ @RamRachum อะไรwhich envและwhich pythonและtype python?
Daniel Beck


0

จะเกิดอะไรขึ้นเมื่อคุณรัน (จากเชลล์):

$ /usr/bin/env python

.. ?

ถ้ามันเริ่มเซสชัน python แบบโต้ตอบก็สามารถพบหลามได้ (คุณยังสามารถเพียงแค่ใช้: type python) หากพิมพ์ "ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว" แสดงว่าpythonไม่พบใน PATH ของคุณ ดูว่าสามารถ tweaked ต่อไปนี้เพื่อแก้ไขปัญหา (ช่องว่างในเส้นทาง / to / python อาจทำให้เกิดปัญหา):

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

0

ฉันกลายเป็นไม่ตรงกันระหว่างactivate.shไฟล์ของ Virtualenv และ MSYSGIT มันไม่เคยตั้งใจจะทำงานบน Windows


0

Windows 10 รุ่นล่าสุดรองรับการติดตั้งระบบย่อย Linux หากคุณเรียกใช้จากที่นั่นเส้นทางควรถูกต้อง

มันควรจะเป็นวิธีแก้ปัญหาที่ใช้งานได้ถ้าคุณโอเคกับการทำงานแบบนั้น


0

รากของปัญหาคือการที่ช่องว่างใน shebangs จะถูกตีความเป็นข้อโต้แย้งการจัดหาเพิ่มเติมเพื่อปฏิบัติการเพื่อให้C:\Program Files\Python\python.exeได้รับการมองว่าเป็นC:\Programให้Files\Python\python.exeเป็นอาร์กิวเมนต์

ทางออกที่ดีที่สุดสำหรับเรื่องนี้เพราะช่องว่าง Windows LOVES ใน$HOMEไดเรกทอรีและProgram Filesสถานที่อื่น ๆ แม้ว่ามันจะสามารถแบ่งสิ่งต่าง ๆ ใน cmd.exe และ Powershell และเครื่องมืออื่น ๆ ได้:

ติดตั้ง Python C:\Pythonและเพิ่มC:\Pythonโฟลเดอร์ที่มีpython.exeชีวิตอยู่และScriptsไดเรกทอรีที่อยู่ภายในกับPATHตัวแปรสภาพแวดล้อมของคุณในระดับระบบหรือผู้ใช้

หากคุณต้องการ 2.7.x งูหลามและ 3.x ที่จะอยู่ร่วมติดตั้งพวกเขาเข้าไปในC:\Python27และC:\Python36และC:\Python37และเปลี่ยนชื่อpython.exeเพื่อpython2.exe, python36.exe, python37.exeฯลฯ และเพิ่มแต่ละโฟลเดอร์เหล่านั้นของพวกเขาและโฟลเดอร์เข้าไปในScripts PATHคุณอาจต้องการตรวจสอบว่างูหลาม 3 รุ่นที่คุณต้องการที่จะเป็น "เริ่มต้น" และยังทำสำเนาในโฟลเดอร์นั้นเป็นที่จะจัดการกับสคริปต์ที่ใช้python3.exe!#/usr/bin/env python3

หากโฮมไดเร็กตอรี่ของผู้ใช้ของคุณมีช่องว่าง, คุณอาจประสบปัญหาหากคุณใช้pip install --user somepackageไวยากรณ์ --userค่าเริ่มต้นไปยังไดเรกทอรีบ้านของคุณและพื้นที่ที่จะเดินทางถึงสิ่งที่อยู่ในกรณีนี้เช่นกัน วิธีแก้ปัญหาได้อธิบายไว้ที่นี่แต่โปรดส่งออก PYTHONUSERBASE ไปที่สภาพแวดล้อมของคุณ

export PYTHONUSERBASE=/myappenv
pip install --user SomePackage

หรือใน Windows (Powershell):

$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.