วิธีการทำให้. executable สามารถใช้งานได้ทุกที่บน OS X


5

ฉันมีไดเรกทอรีนี้/ foo / บาร์ / ภายในผมมีไฟล์หลามชื่อmyfile.py ฉันทำให้มันปฏิบัติการได้โดยการเพิ่ม (ที่ด้านบน):

#!/usr/bin/env python

จากนั้นฉันทำให้มันทำงานได้โดยการออก

chmod +x myfile.py

ฉันแก้ไขเส้นทางของฉันโดยการออก

sudo nano /etc/paths

ฉันเพิ่ม/ foo / bar /ลงไป

ปัญหาคือแม้ว่าฉันจะสามารถเรียกใช้ myfile.py ได้โดยพิมพ์. / myfile.pyในขณะที่ฉันอยู่ใน/ foo / bar /แต่มันไม่ทำงานจากที่อื่น ผมทำอะไรผิดหรือเปล่า?

ขอขอบคุณ.

คำตอบ:


2

คุณต้องเพิ่มลง/foo/barใน$PATHตัวแปรสภาพแวดล้อมของคุณ นำทางไปยังไดเรกทอรีบ้านของคุณโดยการพิมพ์ที่พรอมต์แล้วพิมพ์cd nano .profileภายในไฟล์นี้เพิ่มบรรทัดต่อไปนี้:

export PATH=$PATH:/foo/bar

จากนั้นบันทึกและออก ออกจาก Terminal.app (หรือโปรแกรมใดก็ตามที่คุณกำลังใช้) และรีสตาร์ท /foo/barตอนนี้ควรจะอยู่ในเส้นทางการค้นหาของคุณเพื่อให้แน่ใจว่าพิมพ์echo $PATHแล้วและดูว่าเป็นที่สิ้นสุดหรือไม่ ตอนนี้คุณควรจะสามารถเรียกใช้myfile.pyจากที่ใดก็ได้


ตอนท้ายของ $ PATH ของฉัน (มันเป็นไปแล้ว แต่ฉันพยายามเพิ่มสิ่งที่คุณเสนอให้กับ. profile เช่นกัน) เมื่อฉันพิมพ์ "myfile.py" ทุกที่มันจะบอกฉันว่า "ไม่พบคำสั่ง"
ilovebigmacs

ก่อนอื่นตรวจสอบให้แน่ใจว่าสะกดทุกอย่างถูกต้องแล้ว - พา/usr/loacl/binฉันไปก่อน :) ฉันคิดว่าคุณใช้bashเป็นเปลือกของคุณใช่ไหม พิมพ์source ~/.profile(เพื่อให้แน่ใจว่าอ่านแล้ว) จากนั้นพิมพ์hashเพื่อรีเฟรชหน่วยความจำของเชลล์ของพา ธ การค้นหา
MattDMo

เมื่อฉันพิมพ์ซอร์ส ~ / .profile ทั้งหมดที่ฉันเห็นคือบรรทัดว่าง ดังนั้นฉันเดาว่ามันจะไม่ถูกอ่านเหมือนตอนที่แก้ไขมันฉันเห็น export PATH = $ PATH: / foo / bar line อยู่ ฉันควรทำอย่างไร?
ilovebigmacs

source ~/.profileคุณจะไม่ได้เห็นอะไรเมื่อพิมพ์ สิ่งที่sourcecoes คำสั่งอ่านไฟล์และดำเนินการสิ่งที่อยู่ภายใน หลังจากที่คุณเรียกใช้sourceคำสั่งและเรียกใช้hashคุณสามารถเรียกใช้myfile.pyหรือไม่
MattDMo

ใช่ มันใช้งานได้ในที่สุด ขอขอบคุณ! ฉันจะยอมรับคำตอบของคุณเป็นคำตอบที่ถูกต้องแม้ว่าวิธีแก้ปัญหาจะอยู่ในความคิดเห็น
ilovebigmacs

1

ที่ประเภทอาคารของคุณ:

which python

ตรวจสอบให้แน่ใจว่าเส้นทางนี้ใน shebang ที่อยู่ในบรรทัดที่ 1 ของไฟล์. py ของคุณ ในระบบของฉันมันเป็น

#!/usr/local/bin/python

จากนั้นลองครั้งที่ 1:

export PATH=$PATH:/path/to/where/your/script/is

ในสถานีใด ๆ

ตรวจสอบว่า PATH ติดค้างโดยตรวจสอบ:

$PATH

ควรมีเส้นทางไปยังสคริปต์ของคุณในตอนนี้

ตอนนี้คุณควรจะสามารถเปิดใช้งานแบบฟอร์มสคริปต์ได้ทุกที่

PATH จะรีเซ็ตเมื่อคุณปิดเทอร์มินัลแล้วดังนั้นคุณควรจะได้รับค่าตอบแทนมันจะถูกเพิ่มเข้าไปใน PATH อย่างถาวร

ทางออกที่ดีคือมีรหัสต่อไปนี้ในคุณ. bash_profile:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

ดูการเขียนเช่นhttp://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html สิ่งนี้จะช่วยให้มั่นใจได้ว่า. bashrc จะถูกโหลดทุกครั้งที่เปิดตัวเทอร์มินัลและเมื่อคุณเปิด subshell ใส่การส่งออก

export PATH=$PATH:/path/to/where/your/script/is

บรรทัดหนึ่งในไฟล์. bashrc ของคุณ ออกจากและรีสตาร์ท terminal นั่นควรจะแยกแยะทุกอย่างออก


0

คุณกำหนดเป้าหมายหลามแบบใด

คุณติดตั้งด้วย Brew หรือไม่? มันใช้เส้นทางที่แตกต่าง

which python3 หรือ which python

เลือกหนึ่งที่คุณต้องการ

คัดลอกเอาต์พุตนั้น

วางไว้ที่ด้านบนของไฟล์ไพ ธ อน

เพิ่ม#!ด้านหน้าของเส้นทางนั้นเพื่อให้ดูเหมือน

#!/usr/local/bin/python3

ตรวจสอบให้แน่ใจว่าเปลี่ยนสิทธิ์ของไฟล์

chmod +x filename

วางไฟล์นั้นในโฟลเดอร์ที่อยู่ในเส้นทางของคุณ

ไม่แน่ใจว่าโฟลเดอร์ของคุณอยู่ในเส้นทางของคุณหรือไม่?

echo $path

วิธีเพิ่มโฟลเดอร์นั้นในเส้นทางของคุณ?

ค้นหาเส้นทางของคุณก่อน

echo $HOME

หากคุณกำลังใช้ bash หรือ zsh คุณอาจมีสิ่งนี้

ใน~/.bash_profileหรือ~/.bashrcหรือ~/.zshrcที่ด้านล่างของไฟล์ของคุณ

export PYTHON_UTILS="$HOME/code/python/utils"

export PATH="$PYTHON_UTILS:$PATH"

พิจารณาลบ.pyไฟล์ของคุณออกจากไฟล์ bc ซึ่งไม่จำเป็นในกรณีนี้

ปิดและเปิดเทอร์มินัลของคุณซึ่งกำลังจัดหาไฟล์ของคุณตามเส้นทางของมัน

และตอนนี้คุณควรจะสามารถจัดการกับไฟล์ไพ ธ อนของคุณคล้ายกับคำสั่ง bash

คุณไม่จำเป็นต้องใช้python3 filename.pyเพื่อเรียกใช้ไฟล์คุณสามารถใช้filename

จากที่ใดก็ได้ในระบบไฟล์ของคุณ!

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