ฉันใช้อะไรบน linux เพื่อทำให้โปรแกรม python สามารถทำงานได้


91

ฉันเพิ่งติดตั้งระบบ linux (Kubuntu) และสงสัยว่ามีโปรแกรมที่จะทำให้โปรแกรม python ทำงานได้สำหรับ linux หรือไม่


ตอบแล้วที่นี่http: //stackoverflow.com/questions/193077 / ...
Andrew Beyer


2
ไม่มันไม่ได้รับคำตอบที่นั่น คำถามนั้นถามเกี่ยวกับปัญหาการแจกจ่าย
tzot

ไม่มันไม่ใช่การหลอกลวง คำถามนั้นเกี่ยวข้องกับการแจกจ่ายซอฟต์แวร์ python เพื่อหลีกเลี่ยงปัญหาความพร้อมใช้งานของไลบรารีและความเข้ากันได้
tzot

คำตอบ:


163

เพียงใส่สิ่งนี้ในบรรทัดแรกของสคริปต์ของคุณ:

#!/usr/bin/env python

ทำให้ไฟล์ปฏิบัติการได้ด้วย

chmod +x myfile.py

ดำเนินการด้วย

./myfile.py

8
ฉันสับสน. "#! / usr / bin / env python" ทำงานอย่างไรเมื่อแฮชควรทำให้เป็นบรรทัดที่แสดงความคิดเห็น ฉันพยายามเรียกใช้สคริปต์โดยไม่มีบรรทัดแฮช แต่ไม่ได้ผล เห็นได้ชัดว่าจำเป็นต้องมีบรรทัด แต่จะทำงานอย่างไรถ้าเป็นความคิดเห็น?
Nav

5
หากคุณส่งสคริปต์ไปยังโปรแกรมเมอร์คนอื่นก็ใช้ได้ แต่นี่ไม่ใช่วิธีที่เหมาะสมในการเผยแพร่โปรแกรม Python ให้กับผู้ใช้ปลายทาง จะเกิดอะไรขึ้นหากผู้ใช้ไม่ได้ติดตั้ง Python จะเกิดอะไรขึ้น แต่เป็นเวอร์ชันที่แตกต่างจากที่คุณเขียนโปรแกรมไว้ โดยรวมแล้วสิ่งนี้จะใช้ได้กับผู้ใช้เพียงไม่กี่เปอร์เซ็นต์โดยเฉพาะใน Windows
Jonathan Hartley

5
@MathManiac หากคุณดำเนินการตามที่กล่าวเป็นนัยผู้ใช้ประมาณ 15% จะไม่สามารถเรียกใช้แอปพลิเคชันของคุณได้ นี่จะเป็นภาระการสนับสนุนที่ทำให้พิการไม่ต้องพูดถึงประสบการณ์การใช้งานที่ไม่เป็นมิตรอย่างน่าอัศจรรย์ซึ่งจะสร้างกระแสของโพสต์ "แอปพลิเคชัน X sucks" ที่แสดงความเกลียดชัง ฉันยืนยันว่านี่ไม่ใช่วิธีที่เหมาะสมในการเผยแพร่แอปพลิเคชันไปยังผู้ใช้ปลายทาง
Jonathan Hartley

3
@PrahladYeri ใช้ # / usr / bin / env python3
kingledion

4
@Nav ที่เรียกว่าshebang มีการแสดงความคิดเห็นเนื่องจาก python ไม่ควรตีความ มันให้ข้อมูลกับระบบปฏิบัติการ โดยเฉพาะอย่างยิ่งมันบอกว่าควรใช้โปรแกรมอะไรในการรันสคริปต์
MannyC

16

หากคุณต้องการที่จะได้รับการประยุกต์ใช้ไบนารีแบบสแตนด์อะโลนในหลามพยายามที่จะใช้เครื่องมือเช่น py2exe หรือPyInstaller


คำสำคัญ: แบบสแตนด์อโลน
D Adams

ฉันสามารถถอดรหัสเอาต์พุตของ PyInstaller ได้หรือไม่
SuB

14

คุณสามารถใช้ PyInstaller มันสร้าง build dist เพื่อให้คุณสามารถเรียกใช้งานเป็นไฟล์ "ไบนารี" ไฟล์เดียว

http://pythonhosted.org/PyInstaller/#using-pyinstaller

Python 3 มีตัวเลือกดั้งเดิมในการสร้าง build dist ด้วย:

https://docs.python.org/3/distutils/builtdist.html


คำถามไม่ได้เกี่ยวกับการสร้างไฟล์ python exe / elf
warvariuc

8
ขออภัยดูเหมือนว่าคำถามจะแค่นี้! "สงสัยว่ามีโปรแกรมที่จะทำให้โปรแกรม python ทำงานได้สำหรับ linux หรือไม่"
Leo Pepe

ขอบคุณมาก @LeoPepe ฉันเพิ่งเป็นผู้เข้าร่วมชั้นเรียนของฉันซึ่งรับข้อมูล (ชื่อของนักเรียนที่นำเสนอ) จากไฟล์และให้การเข้าร่วมในไฟล์เอาต์พุตโดยคลิกที่สคริปต์ที่รันได้ซึ่งสร้างขึ้นด้วยความช่วยเหลือของ pyinstaller
Genius

5

การวางบรรทัดเหล่านี้ที่จุดเริ่มต้นของโค้ดจะบอกให้ระบบปฏิบัติการของคุณค้นหาโปรแกรมไบนารีที่จำเป็นสำหรับการทำงานของสคริปต์ python นั่นคือตัวแปล python

ดังนั้นจึงขึ้นอยู่กับระบบปฏิบัติการของคุณที่เก็บล่าม python ไว้ เนื่องจากฉันมี Ubuntu เป็นระบบปฏิบัติการมันจึงเก็บล่าม python ไว้/usr/bin/pythonดังนั้นฉันจึงต้องเขียนบรรทัดนี้ที่จุดเริ่มต้นของสคริปต์ python ของฉัน

#!/usr/bin/python

หลังจากกรอกและบันทึกรหัสของคุณ

  1. เริ่มเทอร์มินัลคำสั่งของคุณ

  2. ตรวจสอบให้แน่ใจว่าสคริปต์อยู่ในไดเร็กทอรีการทำงานปัจจุบันของคุณ

  3. ประเภท chmod +x script_name.py

  4. ตอนนี้คุณสามารถเริ่มสคริปต์ได้โดยคลิกที่สคริปต์ กล่องแจ้งเตือนจะปรากฏขึ้น กด "Run" หรือ "Run in Terminal" ในช่องแจ้งเตือน หรือที่พรอมต์เทอร์มินัลพิมพ์./script_name.py


4

หากต้องการให้เรียกใช้งานได้ hello.py

ก่อนอื่นให้ค้นหาเส้นทางที่ python อยู่ในระบบปฏิบัติการของคุณด้วย: which python

โดยปกติจะอยู่ภายใต้โฟลเดอร์ "/ usr / bin / python"

ที่บรรทัดแรกhello.pyควรเพิ่ม:#!/usr/bin/python

จากนั้นผ่านคำสั่ง linux chmod

เราควรทำให้มันสามารถใช้งานได้เช่น: chmod +x hello.py

และดำเนินการกับ ./hello.py


1

ฉันทำสิ่งต่อไปนี้:

  1. ใส่ #! / usr / bin / env python3 ที่ด้านบนของสคริปต์
  2. chmod u + x file.py
  3. เปลี่ยน. py เป็น. คำสั่งในชื่อไฟล์

สิ่งนี้จะเปลี่ยนไฟล์เป็นไฟล์ปฏิบัติการ bash เมื่อคุณคลิกสองครั้งควรเรียกใช้ สิ่งนี้ใช้ได้ในระบบที่ใช้ Unix


0

อีกวิธีหนึ่งที่ทำได้คือการสร้างนามแฝง ตัวอย่างเช่นใน Terminal write:

alias printhello='python /home/hello_world.py'

การเขียนprinthelloจะทำงาน hello_world.py แต่นี่เป็นเพียงชั่วคราว ในการสร้างนามแฝงแบบถาวรคุณต้องเพิ่มลงใน bashrc คุณสามารถแก้ไขได้โดยเขียนสิ่งนี้ในเทอร์มินัล:

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