วิธีการเรียกใช้สคริปต์ Python ในหน้าต่างเทอร์มินัลโดยดับเบิลคลิก


2

ฉันใช้ OSX และฉันกำลังสร้างแอพที่มีโปรแกรม Python ในResourcesโฟลเดอร์สคริปต์ Bash เรียกสคริปต์ Python ให้เรียกใช้เมื่อเปิดตัวแอป สคริปต์อยู่ในMacOSโฟลเดอร์ภายในแอปชื่อเดียวกันกับแอป ฉันมีสคริปต์ Bash นี้:

#!/bin/bash
clear
python /Applications/Converter.app/Contents/Resources/Converter.py

ฉันคิดว่าสคริปต์ Bash จะทำงานเมื่อเปิดตัวแอปดังนั้นจึงทำให้สคริปต์ python ทำงานผ่านหน้าต่างเทอร์มินัล อย่างไรก็ตามเมื่อฉันดับเบิลคลิกที่แอพไม่มีอะไรเกิดขึ้น!

โดยพื้นฐานแล้วฉันต้องการสคริปต์ทุบตีเพื่อเปิดโปรแกรม Python ในหน้าต่างเทอร์มินัลเพื่อให้ผู้ใช้สามารถโต้ตอบกับมันได้

สิ่งที่ฉันหายไปที่นี่?


พื้นหลังจะทำงานอย่างไรได้อย่างไร
Steampunkery

เมื่อฉันคลิกสองครั้งที่แอพไม่มีอะไรเกิดขึ้น! ฉันต้องการสคริปต์ทุบตีเพื่อเปิดโปรแกรมหลามในหน้าต่างเทอร์มินัลเพื่อให้ผู้ใช้สามารถโต้ตอบกับมันได้
Steampunkery

คุณไม่มี "s" ใน "/ Applications /" ในเส้นทางของคุณในสคริปต์นั้นหรือไม่?
Spiff

ให้ฉันตรวจสอบ .... ที่อาจเป็นตัวพิมพ์ผิดเมื่อฉันพิมพ์สคริปต์ลงในคำถาม
Steampunkery

ไม่สคริปต์มี "s" ฉันจะแก้ไขคำถาม
Steampunkery

คำตอบ:


3

นี่คือทางออกที่ดีกว่าสำหรับปัญหาของคุณหากคุณต้องการให้เป็น.appกลุ่ม:

ในConverter.app/Contents/MacOS/Converterสคริปต์ของคุณให้เปิดใช้งานสคริปต์ Python ของคุณด้วยคำสั่ง "open":

open $(dirname "$0")/../Resources/Converter.py

(ฉันทำเคล็ดลับชื่อพา ธ แบบสัมพัทธ์ด้านบนเพื่อให้คุณไม่ได้เข้ารหัสเส้นทางที่แน่นอนที่จะพังถ้าคุณย้าย.appไปมา)

ตรวจสอบให้แน่ใจว่าResources/Converter.pyสคริปต์ของคุณมี Python shebang อยู่ด้านบน:

#!/usr/bin/python

ตรวจสอบให้แน่ใจว่าทั้งสองMacOS/ConverterและResources/Converter.pyทำเครื่องหมายว่าสามารถใช้งานได้ (ใช้chmod a+x filenameกับมัน)

ฉันทดสอบการตั้งค่านี้และopenคำสั่งก็พบว่า.pyควรเปิดไฟล์ใน Terminal โดยไม่ทำอะไรเลย ฉันไม่คิดว่าก่อนหน้านี้ฉันเคยเชื่อมโยง.pyไฟล์กับ Terminal.app มาก่อนในระบบนี้ดังนั้นฉันคิดว่าคำแนะนำเหล่านี้ไม่จำเป็นต้องมีขั้นตอนเพิ่มเติมแม้แต่ในระบบที่สะอาด


1

วิธีที่ง่ายที่สุดในการสร้างสคริปต์แบบดับเบิลคลิกได้ที่ทำงานในหน้าต่าง Terminal ใหม่คือการสิ้นสุดชื่อไฟล์ด้วย ". คำสั่ง" จากนั้นคุณสามารถดับเบิลคลิกที่ไฟล์สคริปต์ได้โดยไม่จำเป็นต้องมี. app ห่อ / แพ็คเกจ

หากคุณต้องการดำเนินการbashคำสั่งก่อน Python คุณสามารถวางทั้งสองไว้ในไฟล์เดียวกัน แต่ใส่รหัส Python ลงในbash execคำสั่ง ทีซีแอลทำอย่างนี้มาก หากคุณต้องการรหัส Python และไม่มีbashรหัสให้เปลี่ยน shebang ที่ด้านบนเป็น#!/usr/bin/python(หรือที่ใดก็ตามที่ Python อยู่ในระบบของคุณ)

ฉันเองไม่ชอบอะไรที่แสดงตัวตนเป็นแอป แต่จริง ๆ แล้วทำงานในหน้าต่างเทอร์มินัลแทนที่จะเป็นแอปจริงของตัวเอง ครั้งเดียวที่ฉันเห็นสิ่งนี้ทำคือจุดสิ้นสุดของ Ixia Chariot สำหรับ OS X ฉันไม่ได้ดูในอีกไม่กี่ปีที่ผ่านมา แต่มันอาจจะยังทำงานได้ มันเป็นการดาวน์โหลดฟรี คุณอาจต้องการคว้ามันและดูว่าพวกเขาทำได้อย่างไรและอาจโพสต์คำตอบสำหรับคำถามของคุณเอง ฉันคิดว่าโซลูชันของพวกเขาเกี่ยวข้องกับการบรรจุไฟล์การตั้งค่า Terminal ในแอพของพวกเขา ฉันคิดว่ามันทำให้เกิดอินสแตนซ์แยกต่างหากของ Terminal.app เพื่อเปิดใช้งานด้วยการตั้งค่าแบบกำหนดเองแปลก ๆ ซึ่งน่ารำคาญในวิธีที่สดใหม่และน่าตื่นเต้น :)


ฉันต้องการมันเป็นแอพ เมื่อฉันเปลี่ยนเป็น Converter.command มันบอกว่าไม่สามารถเปิดแอพได้เพราะมันไม่สมบูรณ์หรือเสียหาย
Steampunkery

0

ลองเปลี่ยนสคริปต์เป็น.commandหรือ.toolต่อเติม แต่อาจเป็นไปไม่ได้ใน OS X ล่าสุด


อย่างไรก็ตามหากคุณต้องการให้สคริปต์เป็นแอปคุณควรสร้างขึ้นมา

โครงสร้างพื้นฐานของแอพ Mac คือ:

MyApp.app/
   Contents/
      Info.plist
      MacOS/
      Resources/

จากนั้นคัดลอกสคริปต์ของคุณลงในMacOS/(ด้วยชื่อเดียวกับแอปของคุณ) ซึ่งควรมีรหัสปฏิบัติการแบบสแตนด์อโลนของแอปพลิเคชัน แหล่งข้อมูลอื่น ๆ Resources/ทั้งหมดจะเข้าสู่

โปรดดูที่สคริปต์ต่อท้ายโดย Thomas (หรือเวอร์ชัน Mathias ) ซึ่งโดยทั่วไปจะเป็นดังนี้:

#!/usr/bin/env bash

APPNAME=${2:-$(basename "$1" ".sh")}
DIR="$APPNAME.app/Contents/MacOS"

if [ -a "$APPNAME.app" ]; then
  echo "$PWD/$APPNAME.app already exists :("
  exit 1
fi

mkdir -p "$DIR"
cp "$1" "$DIR/$APPNAME"
chmod +x "$DIR/$APPNAME"

echo "$PWD/$APPNAME.app"

การใช้งาน:

appify foo.sh "Bar"

แหล่งที่มา: วิธีสร้างแอป Mac อย่างง่ายจากเชลล์สคริปต์


หรือคุณสามารถใช้:

  • DropScriptซึ่งให้คุณสร้างแอปพลิเคชั่นใหม่ (เช่นสคริปต์ที่เขียนด้วย sh, perl และอื่น ๆ )
  • Platypus - แอปที่สร้างแอปพลิเคชั่น Mac OS X ดั้งเดิมจากสคริปต์ที่แปลเช่นเชลล์สคริปต์หรือโปรแกรม Perl, Ruby และ Python
  • สร้างใน IDE บางตัว (เช่น Eclipse) ซึ่งมีตัวเลือกดังกล่าวให้ทำ

หรือสร้างด้วยตนเองโดย:

  • สร้างโครงสร้างโฟลเดอร์แอป
  • วางสคริปต์ของคุณลงใน: MyApp.app/Contents/MacOS/MyApp.app
  • ทำให้ไฟล์ปฏิบัติการ

ในคำอื่น ๆ ( Gino ):

  1. สร้างเชลล์สคริปต์ของคุณ (เช่นcommand.sh)
  2. ให้สิทธิ์ดำเนินการ ( chmod 755 ./command.sh)
  3. รับข้อมูล→เปิดด้วย: → (เชื่อมโยงแอป Terminal)
  4. รับข้อมูล→ (ใส่ไอคอนที่คุณต้องการ)

ดูสิ่งนี้ด้วย:


ฉันไม่คิดว่าคุณทดสอบคำสั่งของคุณเองเพื่อดูว่าพวกเขาจะตอบสนองความต้องการของ OP คำแนะนำเหล่านี้จะทำให้เชลล์สคริปต์ได้รับการดำเนินการ แต่จะไม่ทำให้เกิดการดำเนินการภายในหน้าต่าง Terminal อย่างที่ OP ต้องการ DropScript มาจาก 2002 และเป็น PowerPC เท่านั้น ตุ่นปากเป็ดอาจเป็นทางออกที่ทำงานได้ แต่ OP ดูเหมือนว่าจะต้องการที่จะหาวิธีที่จะทำมันเอง
Spiff
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.