Có cách nào để chạy tập lệnh python từ một trình bao mà không cần viết đường dẫn đầy đủ của nó không?Làm thế nào để chạy một kịch bản Python một cách dễ dàng mà không chỉ định đường dẫn đầy đủ của nó
Ví dụ trong Linux, tôi muốn khi trong thư mục chính của tôi
cd ~
để có thể chạy một kịch bản python gọi run.py đó là trong tiếng nói, ~/dài/path/to/chạy py, nhưng tôi muốn chạy nó bằng cách đơn giản gõ
python run.py
thay vì
python ~/long/path/to/run.py
tôi hy vọng đối với một số loại se danh sách đường dẫn vòm có chứa một số thư mục giống như biến PATH, do đó runthon python chạy run.py đầu tiên nó gặp trong một trong các thư mục.
Tôi đã xem xét việc chuyển run.py thành một tệp thực thi và thêm thư mục của nó vào biến hệ thống PATH, nhưng không thể tìm thấy cách thức thực hiện một tập lệnh python có thể thực thi được.
EDIT
Một năm sau sau khi yêu cầu nó, tôi là một chút ít noob, và tôi thấy rằng câu hỏi của tôi là không phải là rất rõ ràng và không có ý nghĩa nhiều, vì vậy sau khi một câu hỏi upvote tôi sẽ làm rõ một số điều.
1) Di động.
Khi tôi hỏi điều này, tôi đã nói di động. Tuy nhiên, phương tiện di động không rõ ràng trong trường hợp này, và tôi đã không nhấn mạnh nhiều đến nó.
các nền tảng: nên làm việc trên POSIX (Linux, hệ điều hành MacOS, vv) và Windows
điều này vẫn không có ý nghĩa nhiều từ cửa sổ sử dụng
cmd.exe
, và POSIX sử dụngsh
, vì vậy mỗi người có thể chạy các lệnh với một cú pháp khác. Vì vậy, chúng ta hãy nói rằng điều di động nhất có thể sẽ là nạp cùng một đầu vào cho cả haish
vàcmd.exe
, chạy tập lệnh python trong cả hai trường hợp. Trong trường hợp này, bạn có thể chạy cùng lệnh từ một hàm ANSI Csystem
, sử dụngsh
trên POSIX vàcmd
trên Windows. ANSI C là một trong số ít những thứ phổ biến đối với Windows và POSIX, câu hỏi có ý nghĩa trong trường hợp đó.
2) thực thi
Tiếp theo, các cụm từ turning run.py into an executable
, không phải là rất rõ ràng. Bằng cách đó tôi đã nói về chiến lược Linux của chmod +x run.py
, thêm một shebang #!/usr/bin/env python
và thêm thư mục của nó hệ thống thêm ~/long/path/to/biến môi trường PATH. Nhưng sau đó điều này sẽ không làm việc cho các cửa sổ vì các cửa sổ không hỗ trợ một tệp siêu dữ liệu tệp thực thi như Linux và vì/usr/bin/env không nhất thiết tồn tại trong Windows.
3) mở rộng
Cuối cùng, trong đầu tôi, tôi đã hy vọng cho một giải pháp mà không xác định loại tập tin chạy, do đó, rằng nếu một ngày nào đó chúng tôi quyết định để làm cho nó, nói rằng, một file perl, không giao diện sẽ thay đổi.
Do đó, viết run.py
sẽ không hợp lệ vì nó sẽ chỉ định loại tệp; nó sẽ được tốt hơn để có thể viết chỉ run
Cảm ơn FJ, đây là chính xác những gì tôi đang tìm kiếm, tôi cảm thấy rằng nó có hai ưu điểm so với '#!' cách tiếp cận: 2 –
(cụ thể Xin lỗi, một nửa bình luận đã hoàn thành) ... Cảm ơn F.J, đây là những gì tôi đang tìm kiếm, tôi cảm thấy rằng nó có hai ưu điểm so với '#!' cách tiếp cận: 1) không lộn xộn script 2) không lộn xộn biến toàn cầu PATH, và sử dụng PYTHONPATH cụ thể hơn để thay thế. Nhược điểm là tất nhiên phải gõ "python -m" mọi lúc, chiếm không gian và tệ hơn, có thể có nghĩa là viết lại mã nếu bạn quyết định một ngày để biến đổi các kịch bản lệnh python thành, bash script. –
Tôi đã thử python -m chạy nhưng nó không hoạt động ... Tôi chắc chắn rằng run.py là trong PYTHONPATH kể từ khi tôi có thể nhập nó và nó cho thấy khi tôi nhập khẩu sys; print sys.path ... Tôi có thiếu cái gì không? –