Chạy script python từ terminal mà không có phần mở rộng .py


14

Tôi muốn gọi một con trăn kịch bản script.py từ nhà ga bằng cách đơn giản gõ kịch bản . Điều này có thể không? Nếu vậy thì thế nào?

Tôi biết tôi có thể tránh nhập python script.py bằng cách thêm #! / Usr / bin / env python vào đầu tập lệnh, nhưng tôi vẫn phải thêm hậu tố .py để chạy tập lệnh.

Câu trả lời:


21

Các hệ thống tệp Unix / Linux không dựa vào các phần mở rộng như cách các cửa sổ thực hiện. Bạn không cần .pyở cuối tập tin để chạy nó.

Bạn có thể chạy tệp bằng cách gọi nó với trình thông dịch:

python ScriptFile

Hoặc bằng cách đánh dấu nó có thể thực thi và xác định trình thông dịch trên dòng đầu tiên (ví dụ #!/usr/bin/python).

Nếu bạn không thể thực thi tệp với:

/Path/to/ScriptFile

kiểm tra các quyền với

ls -l ScriptFile

Bạn có thể cần thêm cờ thực thi và chmodnó sẽ thực thi cho bạn.

Nếu bạn đang sử dụng tập lệnh tùy chỉnh thường xuyên, bạn có thể muốn đảm bảo thư mục bạn lưu trữ chúng được thêm vào PATHbiến môi trường.


1
Tệp nằm trong ~ / không gian làm việc / python. Tôi đã thêm ~ / workspace / python vào đường dẫn của mình, tôi đã chạy sudo chmod a + x script.py "và tôi đã thêm dòng shebang (#! / Usr / bin / env python) vào đầu tập lệnh . Tôi có thể chạy tập lệnh bằng cách nhập * script.py , nhưng chỉ cần nhập tập lệnh không hoạt động.
jmau5

2
Trong unix / linux, mọi thứ đều là một tệp và trả lời tên tệp của nó. Bạn không thể gọi Script.py là tập lệnh. Hãy thử đổi tên tập tin từ script.txt thành tập lệnh và nó sẽ khắc phục vấn đề của bạn.
Patrick

Xin lỗi tôi hiểu lầm! Mọi chuyện đã được giải quyết, cảm ơn!
jmau5

5

Phần .pymở rộng là không cần thiết để chạy tập lệnh. Bạn chỉ phải làm cho tập lệnh thực thi (ví dụ bằng cách chạy chmod a+x script) và thêm dòng shebang ( #!/usr/bin/env python).


Xem bình luận của tôi về trả lời của Patrick.
jmau5

4

Là một tùy chọn bạn có thể tạo trình bao bọc cho tập lệnh của mình (một .pytệp):

Ví dụ: bạn có một tập lệnh runme.pyđể bạn có thể tạo tệp mới runmeđể bọc tập lệnh:

#!/usr/bin/env python
import runme

và sau đó gọi runme.pychức năng chỉ bằng cách gọi runmetrong shell.

Điều này hữu ích cho các tập lệnh đa nền tảng, vì trên nền tảng Windows, bạn có thể gán .pycác tệp được gọi chỉ bằng tên mà không có phần mở rộng và shebang trong tiêu đề, nhưng trên nền tảng linux bạn không thể và do đó trình bao bọc xuất hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.