2009-07-12 39 views
28

Tôi đã tạo một tập lệnh python được dự định sẽ được sử dụng từ dòng lệnh. Làm thế nào để tôi đi về đóng gói nó? Đây là gói python đầu tiên của tôi và tôi đã đọc một chút về setuptools, nhưng tôi vẫn không chắc chắn cách tốt nhất để làm điều này.Cách gói một dòng lệnh Kịch bản lệnh Python


Giải pháp

tôi đã kết thúc bằng setup.py với các cấu hình quan trọng lưu ý dưới đây:

setup(
.... 
    entry_points=""" 
[console_scripts] 
mycommand = mypackage.mymodule:main 
""", 
.... 
) 

Dưới đây là một tốt example trong ngữ cảnh.

+0

Những nền tảng (s) bạn sẽ được triển khai trên? – ChristopheD

+0

Lý tưởng nhất là * nix hoặc cửa sổ. – Zach

Trả lời

3

@Zach, được làm rõ trong nhận xét của bạn cho câu trả lời của @ soulmerge, có vẻ như những gì bạn cần là viết một setup.py theo hướng dẫn về distutils - here nói riêng là cách bạn đăng ký trên pypi, và here về cách tải lên pypi khi bạn đăng ký - và có thể (nếu bạn cần một số chức năng bổ sung wrt những gì các cung cấp cung cấp của riêng mình) thêm setuptools, trong đó easy_install là một phần, thông qua các hướng dẫn here.

+0

Câu trả lời này, may mắn thay, là một chút lỗi thời. Một nguồn thông tin tốt bây giờ là https://packaging.python.org/en/latest/, cũng như bài viết tôi đã chỉ ra trong câu trả lời của tôi. –

2

Bạn có ý gì khi đóng gói? Nếu nó là một kịch bản duy nhất được chạy trên một hộp đã có cài đặt python, bạn chỉ cần đặt một shebang vào dòng đầu tiên của tệp và đó là nó.

Nếu bạn muốn nó được thực hiện trong Windows hoặc trên một hộp không có python, tuy nhiên, bạn sẽ cần một cái gì đó bên ngoài, như pyinstaller.

Nếu câu hỏi của bạn là về nơi đặt tệp cấu hình/dữ liệu, bạn sẽ cần phải làm việc dựa trên nền tảng (như viết vào registry hoặc home folder), theo như tôi biết.

+0

Nó bao gồm hai tệp python.Tôi muốn đóng gói nó để được phân phối trên PiPy, ví dụ, và cài đặt với easy_install. – Zach

4

Thay vì sử dụng setuptools cách phi tiêu chuẩn tiếp tục, chúng ta có thể trực tiếp dựa vào chức năng distutils thiết lập, sử dụng giao tranh luận scripts, như đã nói ở đây: http://docs.python.org/distutils/setupscript.html#installing-scripts

from distutils import setup 
setup(
    ..., 
    scripts=['path/to/your/script',], 
    ... 
) 

Nó cho phép bạn giữ tương thích a) với tất cả các phiên bản python và b) không phải dựa vào một setuptools như một phụ thuộc bên ngoài.

1

Tháng trước, tôi đã viết một bài viết trả lời chính xác câu hỏi của bạn. Bạn có thể tìm thấy nó ở đây: http://gehrcke.de/2014/02/distributing-a-python-command-line-application/

Ở đó, tôi đang sử dụng phương pháp duy nhất hiện nay được đề xuất (sợi xe, setuptools tinh khiết thay vì distutils, các console_scripts then chốt trong từ điển entry_points, ...), mà làm việc cho Python 2 và 3.

0

Đối với những người mới bắt đầu sử dụng Python Packaging, tôi khuyên bạn nên xem qua số Python Packaging Tutorial này.

Lưu ý về hướng dẫn:

Tại thời điểm này, tài liệu hướng dẫn này tập trung vào Python 2.x chỉ, và có thể không được như áp dụng đối với gói nhắm mục tiêu đến Python 3.x

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