2015-03-26 17 views
10

Khi sử dụng phân phối Python Anacoda, cách tốt nhất để cài đặt gói PyPi không có sẵn trực tiếp thông qua Anaconda là gì? Để bây giờ tôi đang sử dụng:Cách cài đặt gói PyPi sử dụng lệnh conda anacaonda

conda pipbuild [pypi_name] 
conda install --use-local [package_spec] 

Nhưng tôi không rõ ràng nếu điều này là cách tốt nhất và nếu conda update --all sẽ cập nhật những gói khi cập nhật được tạo sẵn. Tôi cũng không rõ điểm binstar là gì khi PyPi đã tồn tại.

Trả lời

13

Nếu bạn muốn xây dựng gói conda cho gói PyPI, cách được khuyến nghị là sử dụng conda skeleton pypi package và sử dụng conda build package theo công thức tạo ra. Bạn sẽ cần cập nhật công thức mỗi khi gói được cập nhật.

Bạn cũng có thể sử dụng pip để cài đặt các gói này. Những bất lợi ở đây là những gói wont 'được quản lý bởi conda ở tất cả.

+1

Cảm ơn! Câu hỏi ngớ ngẩn: khu chung cư quản lý các gói mang lại cho tôi những gì? Quản lý phụ thuộc chủ yếu? Cập nhật tự động? Ngoài ra, tại sao phương pháp bạn mô tả thích hợp hơn với những gì tôi đã mô tả ở trên? – user1507844

+0

điều kiện quản lý conda giúp bạn có được lợi ích của việc quản lý sự phụ thuộc. Nó cũng làm cho nó dễ dàng hơn để sử dụng gói đó với môi trường conda. Cập nhật sẽ không xảy ra "tự động" (theo nghĩa là bạn cần phải gõ 'conda update' để điều đó xảy ra). Về lý do tại sao nó thích hợp hơn, 'conda skeleton' ổn định hơn nhiều so với' pipa pipbuild'. – asmeurer

+0

Nó không nói điều này trong http://conda.pydata.org/docs/using/pkgs.html#install-non-conda-packages nó chỉ nói 'pip install x'. các hướng dẫn đó có được cập nhật không? – endolith

12

Tôi sẽ không đồng ý với phản hồi được chấp nhận và lưu ý rằng pip install [some-pypi-package] thường là cách tốt nhất để cài đặt gói PyPi trong môi trường Conda.

Trong khi các gói sẽ không được quản lý bởi người quản lý gói Conda, chúng vẫn sẽ được quản lý bởi môi trường Anaconda. Nó sẽ tải xuống phiên bản chính xác của gói để cài đặt Python hoạt động và cập nhật nó một cách chính xác bằng cách sử dụng trình quản lý gói pip.

Khi sử dụng Anaconda, bạn nên chuyển sang conda trước khi pip khi có thể, nhưng bạn không mất bất kỳ lợi ích nhân bản nào khi sử dụng Anaconda khi bạn sử dụng pip.

+1

Một vấn đề cần lưu ý với điều này: Nếu gói 'pip' yêu cầu một phiên bản khác của một phụ thuộc đã được cài đặt bởi' conda', 'pip' sẽ thay thế gói đã cài đặt và' conda' sẽ không nhận ra gói của nó có đã bị loại bỏ. Đối với một thiết lập môi trường một lần, kịch bản, điều này có lẽ là tốt. Đối với một môi trường mà bạn cài đặt vào bằng tay theo thời gian, bạn có thể sẽ kết thúc bối rối sau một thời gian. –

+0

Một cách để giảm thiểu vấn đề tôi đã đề cập ở trên: lưu đầu ra của 'pip freeze' thành' constraints.txt' và sau đó cài đặt bằng 'pip' bằng cách sử dụng' pip install -c constraints.txt '. Điều này sẽ ngăn chặn 'pip' xóa các gói' conda'. Nó cũng sẽ ghim các gói 'pip'. Các gói 'pip' có thể được lọc ra khỏi' constraints.txt' bằng cách xem kết quả của 'danh sách conda' cho các mục được đánh dấu là' '. –

+0

Đối với những thứ như Django, tôi sẽ thiết lập một môi trường ảo bằng cách sử dụng Anaconda sau đó thực hiện cài đặt hoàn toàn thông qua pip vì những lý do được đề cập ở trên. Tinh khiết conda hoạt động tốt nhất để có được một máy tính khoa học ngăn xếp với nhau sử dụng các kênh conda. –

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