2016-10-15 17 views
10

Tôi cần bao gồm các gói Python có sẵn thông qua kho Github công cộng cùng với gói Python (2.7) của tôi. Gói của tôi có thể được cài đặt qua pip sử dụng setup.py.Cách bao gồm các phụ thuộc git trong setup.py để cài đặt pip

Cho đến nay, điều này có thể được thực hiện bằng dependency_links trong setup.py file:

setuptools.setup(
    name="my_package", 
    version="1.0", 
    install_requires=[ 
     "other_package==1.2" 
    ], 
    dependency_links=[ 
     "https://github.com/user/other_package/tarball/master#egg=other_package-1.2" 
    ]  
) 

này vẫn hoạt động khi gói được cài đặt với các --process-dependency-links cờ, nhưng chức năng dependency_links dường như bị phản đối, vì:

pip install git+https://github.com/user/[email protected]#egg=my_package-1.0 --process-dependency-links 

mang lại cho tôi những cảnh báo sau đây:

DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release. 

Có cách nào khác để bao gồm các phụ thuộc git trong tệp setup.py có hỗ trợ cài đặt pip không?

Chỉnh sửa (2016/10/17) để làm rõ trường hợp sử dụng của tôi:

Hãy nói rằng tôi tìm thấy một lỗi trong other_package. Tôi ngã ba repo tương ứng trên Github, sửa lỗi và thực hiện một yêu cầu kéo. Yêu cầu kéo của tôi không được chấp nhận ngay lập tức (hoặc sẽ không bao giờ vì gói không còn được duy trì tích cực nữa). Tôi muốn phân phối my_package cùng với nĩa của tôi other_package và muốn người dùng có thể cài đặt pip my_package mà không cần biết thêm chi tiết về yêu cầu này và không phải cung cấp bất kỳ cờ bổ sung nào khi cài đặt. Người dùng của my_package sẽ tiếp tục có thể bao gồm my_package làm yêu cầu trong gói tùy chỉnh của riêng họ.

Làm cách nào để đạt được điều này với các chế độ cài đặt khác nhau (bánh xe, trứng, phát triển, ...)?

Trả lời

2

Cá nhân, tôi sẽ tránh bao gồm kho lưu trữ git làm phụ thuộc. Trong các kịch bản bạn mô tả, tôi thấy hai tùy chọn.

đâu Package là unmaintained

Nếu một gói là bỏ dở, bạn có thể ngã ba dự án và phân phối phiên bản riêng của bạn, hoặc bạn có thể phân phối mã chia hai như là một submodule mã riêng của bạn (tức là bao gồm phụ thuộc bên ngoài trực tiếp trong gói phân phối của bạn)

Cá nhân tôi thích phân phối phiên bản của riêng mình.

Trường hợp gói chưa bao gồm bạn bugfix

Trong trường hợp này, tôi sẽ phân phối mã cố định như một phần của gói của bạn cho đến một thời gian chẳng hạn như lỗi là cố định.

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