ใช้งานไฟล์ Python ใน Terminal


47

พยายามเรียนรู้วิธีเรียกใช้สคริปต์ของฉันผ่านทางเทอร์มินัลของ Ubuntu เป็นประจำ ที่ถูกกล่าวว่าผมคุ้นเคยกับbash, wgetและawkถูกเรียกว่า แต่อย่างไรผมเรียกไฟล์หลามที่จะทำงานในสถานี? ฉันต้องการเรียนรู้สิ่งนี้ แต่ฉันไม่แน่ใจว่าจะทำการวิจัยที่ไหน ฉันมี.pywไฟล์ที่อ้างอิงหลาย.pyไฟล์ในโฟลเดอร์


กรณีที่แตกต่างกันในเรื่องต่อไปนี้เนื่องจากชื่อดั้งเดิมกว้างเกินไปรวมถึง - เกี่ยวกับการเรียกใช้สคริปต์หลามในเทอร์มินัลเพื่อเรียกใช้ฟังก์ชันstackoverflow.com/q/25837063/54964
LéoLéopold Hertz 준영

คำตอบ:


81

ตัวเลือกที่ 1: เรียกล่าม

  • สำหรับ Python 2: python <filename>.py
  • สำหรับ Python 3: python3 <filename>.py

ตัวเลือกที่ 2: ให้สคริปต์เรียกล่าม

  1. #!/usr/bin/env pythonตรวจสอบให้แน่ใจบรรทัดแรกของไฟล์ของคุณมี
  2. ทำให้ปฏิบัติการได้ - chmod +x <filename>.py.
  3. และเรียกใช้เป็น ./<filename>.py

อะไรคือเหตุผลที่เมื่อฉันต้องการเรียกใช้. py ของฉันมันจะทำงานเฉพาะกับตัวเลือกวิธีที่ 1 ของคุณและข้อที่สองให้ข้อผิดพลาดทางไวยากรณ์
Krsztr

ถ้าคุณต้องการเปิดไฟล์ไพ ธ อนใหม่
asmgx


5

นอกจากนี้ยังควรกล่าวถึงด้วยการเพิ่มการ-iตั้งค่าสถานะหลังจากpythonนั้นคุณสามารถให้เซสชันของคุณทำงานต่อไปเพื่อเข้ารหัสเพิ่มเติม แบบนี้:

python -i <file_name.py>

3
python <filename.py>

ฉันคิดว่า pyw ควรจะทำงานในลักษณะเดียวกัน คุณยังสามารถเริ่มต้นคอนโซลแบบโต้ตอบได้ด้วย

python

นอกจากนี้คุณสามารถหลีกเลี่ยงการเรียก python อย่างชัดเจนโดยเพิ่ม shebang ที่ด้านบนของสคริปต์:

#!/usr/bin/env python

... หรือรูปแบบต่างๆ


2

รันคำสั่งต่อไปนี้ก่อน

chmod +x <filename>.py

จากนั้นที่ด้านบนสุดของสคริปต์ให้เพิ่ม#!และเส้นทางของล่าม Python:

#!/usr/bin/python

หากคุณต้องการให้สคริปต์เป็นอิสระจากที่ล่าม Python อาศัยอยู่คุณสามารถใช้envโปรแกรม ตัวแปร Unix เกือบทั้งหมดรองรับสิ่งต่อไปนี้โดยสมมติว่า Python interpreter อยู่ในไดเรกทอรีในผู้ใช้$PATH:

#! /usr/bin/env python

0

เปลี่ยนไดเร็กทอรีที่ใช้cdเป็นไดเร็กทอรีที่มี. py และรันหนึ่งในสองคำสั่งต่อไปนี้:

python <filename>.py  # for Python 2.x  
python3 <filename>.py # for Python 3.x 

หรือเรียกใช้หนึ่งในสองคำสั่งต่อไปนี้:

python /path/to/<filename>.py  # for Python 2.x  
python3 /path/to/<filename>.py # for Python 3.x 

-2

ลองใช้คำสั่งแทนpython3 pythonหากสคริปต์เขียนใน Python3 และคุณพยายามเรียกใช้ด้วย Python2 คุณอาจมีปัญหา Ubuntu มีทั้ง; การเปลี่ยนชื่อโปรแกรมเป็นpython3(แทนที่จะแทนที่python) ทำให้เป็นไปได้ Ubuntu ต้องการ v2.7 (ตั้งแต่ 2/16/2017) ดังนั้นอย่าลบหรือลบ Python2 แต่ให้ทั้งสองอย่าง สร้างนิสัยในการใช้ Python3 เพื่อเรียกใช้สคริปต์ซึ่งสามารถเรียกใช้งานได้


1
-1 Python 3 ไม่สามารถเรียกใช้สคริปต์ Python 2 (โดยมีข้อยกเว้นเล็กน้อย)
wjandrea

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