2012-10-19 27 views
12

Có thể chỉ định phụ thuộc nguồn (có thể chỉnh sửa) trong setup.py được biết là nằm trên hệ thống tệp cục bộ không?Làm cách nào để tôi có thể cài đặt một gói từ hệ thống tệp cục bộ

xem xét cấu trúc thư mục sau đây, tất cả đều sống trong một kho lưu trữ VCS duy nhất:

projects 
    utils 
    setup.py 
    ... 
    app1 
    setup.py 
    ... # app1 files depend on ../utils 
    app2 
    setup.py 
    ... # app2 files depend on ../utils 

Với các lệnh sau:

cd projects 
mkvirtualenv app1 
pip install -e app1 

Tôi muốn có tất cả các phụ thuộc cho app1 được cài đặt, bao gồm "utils", là phụ thuộc "có thể chỉnh sửa". Tương tự như vậy, nếu tôi làm tương tự cho app2.

Tôi đã thử chơi với tất cả các kết hợp khác nhau của file://... URL trong install_requiresdependency_links không có kết quả. Tôi muốn sử dụng URL liên kết phụ thuộc như src+file://../utils, điều này sẽ cho trình cài đặt biết nguồn của gói nằm trên hệ thống tệp tại đường dẫn tương đối này. Có cách nào để làm việc này không?

+0

Đây có thể là một số trợ giúp: http://packages.python.org/distribute/setuptools.html#dependencies-that-aren-t-in-pypi –

+0

Cảm ơn, Rob. Tôi đã xem xét trang đó một cách rộng rãi trước khi đặt câu hỏi tại đây. Trang liệt kê hai loại URL: (1) URL tải xuống trực tiếp và (2) URL của các trang web có chứa liên kết tải xuống trực tiếp. Tôi đã hy vọng vấn đề của tôi sẽ rơi vào thể loại đầu tiên, nhưng tôi không thể tìm ra cách xây dựng URL. – millerdev

+4

Tôi đã gửi [bản vá lên pip] (https://github.com/pypa/pip/pull/719) để hỗ trợ các tệp 'file:' tương đối trong 'dependency_links', giải quyết vấn đề của tôi. Hy vọng nó sẽ sớm được sát nhập. – millerdev

Trả lời

0

Khi tôi muốn làm việc với một tập hợp các dự án có liên quan, tôi cài đặt tất cả chúng bằng cách sử dụng /setup.py develop.

Nếu tôi nhầm lẫn hoặc sau này tôi muốn tạo mô-đun cài đặt pip có thể chỉnh sửa, tôi sao chép nguồn và thực hiện python setup.py develop trên đó, thay thế mô-đun hiện có.

Để chắc chắn, tôi xóa tham chiếu trong gói trang web của virtualenv và chính gói đó.

2

Tôi gặp sự cố giống nhau khi cần phụ thuộc vào các mô-đun trong thư mục anh chị em. Tôi đã có thể tìm ra giải pháp sau khi vấp ngã khi https://caremad.io/2013/07/setup-vs-requirement/

tôi đã kết thúc requirements.txt để đề cập cụ thể đến tập tin tôi muốn, và sau đó cài đặt tất cả mọi thứ với

pip install -r requirements.txt 

requirements.txt

-e ../utils                                          
-e . 

Và setup.py có tất cả các phụ thuộc khác của tôi, kể cả utils. Khi pip cố gắng tự cài đặt app1, nó nhận ra rằng sự phụ thuộc utils đã được lấp đầy, và do đó vượt qua nó, trong khi cài đặt các yêu cầu khác.

+0

đường dẫn tương đối trong tác vụ requirements.txt trong trường hợp bạn đã nhập thư mục và thực thi lệnh ... thực hiện cùng một lệnh trong thư mục mẹ sẽ không hoạt động. Có vấn đề với đặc tả đường dẫn tương đối cho tệp pip requirements.txt https://github.com/pypa/pip/issues/3772 – infinityLoop

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