2012-05-29 22 views
16

Tôi đang tìm hiểu về gói Python từ Tìm hiểu Python Way cứng và một trong những bài tập nó nói:Kịch bản nào sẽ đi vào một thư mục bin của gói Python?

Đặt một kịch bản trong thư mục bin mà bạn có thể chạy

Đối với tôi, nó có vẻ mơ hồ. Tôi không chắc chắn loại kịch bản nào sẽ đi vào thư mục bin. The Hitchhiker's Guide to Packaging nói

đưa vào thùng bất kỳ tập lệnh nào bạn đã viết sử dụng gói của bạn và bạn cho rằng nó hữu ích cho người dùng của bạn. Nếu bạn không có, hãy xóa thư mục bin.

Nhưng tôi vẫn còn tự hỏi loại kịch bản nào sẽ xuất hiện ở đó. Vì vậy, tôi biết nó có thể âm thanh như một câu hỏi ngớ ngẩn, nhưng ai đó có thể cho tôi một ví dụ về khi nào, và tại sao người ta sẽ đặt "một kịch bản" trong thư mục bin của gói của họ?

Trả lời

20

Tôi vừa mới trải qua Ex46 trong LPTHW. Giống như bạn, tôi đã bị bối rối bởi các kịch bản. Trong trường hợp câu trả lời khác đã quá tiên tiến cho bạn, tôi đã kết thúc chỉ cần đặt một cách đơn giản "hello world" kịch bản:

#!/usr/bin/env python 

from test3 import printstring 
printstring.printstring("test script working") 
print "test over" 

tôi đặt tên tập tin đó testscript3.py (* Lưu ý, tôi đã học sau đó nó sẽ là thuận tiện hơn để rời khỏi phần mở rộng tên file py thể nó là một kịch bản thực sự mà tôi muốn vẻ giống như một lệnh hệ thống)

tập tin test3.py của tôi là như vậy:

def printstring(s='you did not provide string'): 
    print s 

Dưới đây là một số điều người mới mà tôi đã học được khi cố gắng làm cho quy trình này hoạt động:

  • #! biểu tượng đôi khi được phát âm là shebang và giải thích đơn giản là lệnh trên dòng đó cho shell biết sử dụng python để chạy kịch bản lệnh. Nếu bạn bỏ đi phần mở rộng tên tập tin ".py", thì người dùng của tập lệnh không cần phải quan tâm đến trình thông dịch nào cần thiết để chạy tập lệnh. Xem wikipedia shebang article.

  • Tôi chạy lệnh sau để đóng gói phân phối:

    python setup.py sdist

  • Sau khi làm điều đó, tôi đã có thể cài đặt các gói và kịch bản bằng cách chạy

    sudo pip cài đặt test3-0.1.tar.gz

  • Một điều tôi lo lắng là quyền trên tệp tập lệnh. Tuy nhiên, tôi nhận thấy rằng các distutils đã chăm sóc này khi đóng gói (thay đổi chế độ để 755 hoặc bất cứ điều gì).

Bạn có thể tìm thấy whole project for this example on github của mình.

+1

+1 cho phần newbie – Deepend

+0

rất đẹp. cám ơn vì đã chia sẻ. – MikeiLL

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