2009-07-22 36 views
12

Tôi đang viết một ứng dụng khá cơ bản trong python (chỉ có một tệp tại thời điểm này). Câu hỏi của tôi là làm thế nào để tôi nhận được nó để kịch bản python có thể được chạy trong/usr/bin mà không có phần mở rộng .py?Các tập lệnh Python trong/usr/bin

Ví dụ, thay vì chạy

python htswap.py args 

từ thư mục nơi mà nó đang là, tôi muốn để có thể cd đến bất kỳ thư mục và làm

htswap args 

Cảm ơn trước!

Trả lời

31

Chỉ cần bỏ qua phần mở rộng .py bằng cách đổi tên tệp. Sau đó, bạn cần phải đặt dòng sau ở phía trên cùng của tập tin của bạn:

#!/usr/bin/env python 

env là một chương trình nhỏ mà thiết lập môi trường để quyền python phiên dịch được thực hiện.

Bạn cũng phải làm cho thực thi tập tin của bạn, với lệnh

chmod a+x htswap 

Và đổ nó vào /usr/local/bin. Đây là sạch hơn /usr/bin, bởi vì nội dung của thư mục đó thường được quản lý bởi hệ điều hành.

+0

sau nhiều kinh nghiệm đau đớn và cận tử, tôi khuyên bạn nên sử dụng phiên bản python cụ thể mà bạn phát triển cho #!/usr/bin/env python . -minor> (ví dụ: python2.4). Tốt hơn để có quyền kiểm soát của phiên bản python đang chạy thực thi (ít nhất là cho các trường hợp tôi có kinh nghiệm, YMMV) –

13

Dòng đầu tiên của file nên

#!/usr/bin/env python 

Bạn nên loại bỏ phần mở rộng .py, và làm cho các tập tin thực thi, sử dụng

chmod ugo+x htswap 

EDIT:Thomas điểm một cách chính xác rằng đó tập lệnh phải được đặt trong /usr/local/bin thay vì trong /usr/bin. Xin vui lòng upvote câu trả lời của mình (với chi phí của tôi, có lẽ. Bảy upvotes (như chúng ta nói) cho loại công cụ này là vô lý)

+0

Đúng vậy, tôi đã làm điều này sớm hơn và vì một lý do nào đó nó không hoạt động, hóa ra tôi đã quên mất! trong shebang –

2

Shebang?

#!/usr/bin/env python 

Đặt rằng vào đầu tập tin của bạn và bạn thiết lập

+2

Oh em bé khi cô di chuyển ... – Alex

1

thêm #!/usr/bin/env python lên đỉnh rất của htswap.py và đổi tên htswap.py-htswap sau đó làm một lệnh: chmod +x htswap để làm htswap thực thi.

-1

tôi thấy trong các hướng dẫn Python chính thức, http://docs.python.org/tutorial/index.html, mà

#! /usr/bin/env python 

được sử dụng giống như các câu trả lời trên đề nghị. Lưu ý rằng bạn cũng có thể sử dụng sau đây

#!/usr/bin/python 

Đây là kiểu bạn sẽ thấy trong các tập lệnh shell, như tập lệnh bash.Ví dụ:

#!/bin/bash 

Thấy rằng tuts chính thức đi kèm với tùy chọn đầu tiên có lẽ là đặt cược tốt nhất của bạn. Nhất quán trong mã là một cái gì đó để phấn đấu!

+1

Để tham khảo, đầu tiên là tốt hơn bởi vì nó di động. Không phải mọi hệ thống tệp đều có tùy chọn thứ hai. – JasTonAChair

Các vấn đề liên quan