เรียกใช้สคริปต์ Python โดยไม่เรียกใช้ "python" อย่างชัดเจน


39

ฉันใช้ Debian Linux

ฉันสงสัยว่ามีวิธีกำหนดค่าให้เรียกใช้สคริปต์ Python ทั้งหมดในเทอร์มินัลด้วยการพิมพ์script.py(แทนpython script.py)

คำตอบ:


58

มีสองสิ่งที่คุณต้องทำ:

  • ตรวจสอบให้แน่ใจว่าไฟล์ปฏิบัติการได้: chmod +x script.py
  • ใช้ shebang เพื่อให้เคอร์เนลรู้ว่าล่ามอะไรควรใช้ บรรทัดบนสุดของสคริปต์ควรอ่าน:

    #!/usr/bin/python
    

    นี่ถือว่าสคริปต์ของคุณจะทำงานด้วย python เริ่มต้น หากคุณต้องการรุ่นเฉพาะเพียงระบุใน shebang:

    #!/usr/bin/python2.7
    

ตอนนี้คุณสามารถพิมพ์:

    ./script.py

ถ้าสคริปต์อยู่ในไดเรกทอรีปัจจุบันของคุณหรือ:

    script.py

ถ้าตำแหน่งของสคริปต์เกิดขึ้นใน PATH ของคุณหรือ:

    path/to/script.py

มิฉะนั้น.


32
โดยทั่วไปเป็นความคิดที่ดีกว่าที่จะใช้#!/usr/bin/env pythonในกรณีที่ผู้ใช้มี python ในตัว (เช่นใน/usr/local/bin) ซึ่งผู้ใช้ต้องการรันสคริปต์ด้วย
sapi

3
@sapi ไม่เป็นไปตาม Debian อย่างน้อยก็ในนโยบาย dev ของพวกเขา หากคุณกำลังเขียนสคริปต์ของคุณเองคุณสามารถยอมรับความเสี่ยงได้แน่นอนว่าเป็นการดีกว่าที่จะชี้แจงให้ชัดเจน หากคุณต้องการคนในท้องถิ่นเลือกไว้ใน shebang
พอล

3
ไม่ใช่bashว่าจะอ่านไฟล์เมื่อดำเนินการ ...
unperson325680

@progo นี่เป็นความจริง - โปรดทราบว่าหากคุณเห็นคำตอบที่คุณคิดว่าจะได้รับประโยชน์จากการปรับปรุงให้ไปข้างหน้าและแก้ไขการปรับปรุงยินดีต้อนรับเสมอ
Paul

และคุณจะต้องทำ./script.pyไม่ใช่script.py
พอลเดรเปอร์

33

ภายใต้ linux คุณสามารถใช้ hashbang (aka shebang) เพิ่มบรรทัด

#!/usr/bin/python

หากคุณต้องการดำเนินการล่ามหลามเริ่มต้น

#!/path/to/python[x.x]

เพื่อใช้งานบางรุ่นหรือ

#!/usr/bin/env python

หากคุณต้องการสภาพแวดล้อมในการค้นหาหลามให้คุณ

คุณจะต้องทำการเรียกใช้สคริปต์

chmod +x script[.py] 

2

ใช้:

#!/usr/bin/env python

สิ่งนี้จะช่วยให้มั่นใจได้ว่าไพ ธ อนที่ผู้ใช้คาดว่าจะใช้นั้นจะเป็นสคริปต์ที่รัน นี่เป็นสิ่งสำคัญอย่างยิ่งหากผู้ใช้ใช้ virtualenv เพื่อให้มีเวอร์ชันเฉพาะของ python ในสภาพแวดล้อมที่กำหนด


0

ใช้บรรทัด shebang ที่ด้านบนของสคริปต์ของคุณดังนี้:

! / usr / bin / หลาม

อัพเดตเวอร์ชั่นของไพ ธ อนที่เหมาะสมซึ่งคุณต้องการใช้งานสคริปต์ เช่นสำหรับ python 3.6

! /usr/bin/python3.6

สำหรับล่ามเริ่มต้น

! / usr / bin / หลาม

หมายเหตุ: ตรวจสอบให้แน่ใจว่าสคริปต์มีสิทธิ์ดำเนินการได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.