Conda: Cài đặt / nâng cấp trực tiếp từ github


112

Tôi có thể cài đặt / nâng cấp các gói từ GitHub bằng conda không?

Ví dụ, với pipI can do:

pip install git+git://github.com/scrappy/scrappy@master

để cài đặt scrappytrực tiếp từmaster chi nhánh trong GitHub. Tôi có thể làm điều gì đó tương đương với conda không?

Nếu điều này là không thể, sẽ có ý nghĩa gì nếu cài đặt pip với conda và quản lý các cài đặt cục bộ như vậy bằng pip?

Câu trả lời:


74

Có hỗ trợ tốt hơn cho điều này bây giờ thông qua conda-env. Ví dụ, bạn có thể làm:

name: sample_env
channels:
dependencies:
   - requests
   - bokeh>=0.10.0
   - pip:
     - "--editable=git+https://github.com/pythonforfacebook/facebook-sdk.git@8c0d34291aaafec00e02eaa71cc2a242790a0fcc#egg=facebook_sdk-master"

Nó vẫn gọi pip dưới vỏ bọc, nhưng bây giờ bạn có thể thống nhất các thông số kỹ thuật gói conda và pip của mình trong một environment.ymltệp duy nhất .

Nếu bạn muốn cập nhật môi trường gốc của bạn với tập tin này, bạn sẽ cần phải tiết kiệm này vào một tập tin (ví dụ environment.yml), sau đó chạy lệnh: conda env update -f environment.yml.

Có nhiều khả năng bạn muốn tạo một môi trường mới:

conda env create -f environment.yml (đã thay đổi như được cho là trong các bình luận)


Làm thế nào để bạn cài đặt các yêu cầu từ môi trường đó trong môi trường gốc của bạn?
hobs

@hobs - Tôi đã chỉnh sửa câu trả lời để trả lời câu hỏi của bạn.
Aron Ahmadia

1
Nó thực sự conda env create -f environment.yml, với conda createnhững -flá cờ tượng trưng cho --force.
Perfi

1
Nó có được ghi lại ở đâu đó không?
guildhermecgs

1
@Perfi, sai lầm của tôi, tôi nghĩ bạn đã gợi ý rằng -ftrong conda env creategọi lực lượng, và không cho conda create, sai lầm của tôi vì đã không đọc một cách cẩn thận.
Sẽ

103

Các câu trả lời đã lỗi thời. Bạn chỉ cần cài đặt conda pip và git. Sau đó, bạn có thể sử dụng pip bình thường:

  1. Kích hoạt môi trường chung cư của bạn source activate myenv

  2. conda install git pip

  3. pip install git+git://github.com/scrappy/scrappy@master


4
Ngoài ra, bạn phải sử dụng pip nằm trong envs của bạn như trong trường hợp của tôi, pip mà tôi đã sử dụng là "/ home / ubuntu / anaconda3 / envs / tensorflow_p36 / bin / pip". Pip này đến sau khi bạn cài đặt chung cư. Bạn có thể thêm trước bin dir này vào $ PATH của mình.
faizan

1
có phải gói được cài đặt chỉ trên masternhánh sau đó không? Điều gì sẽ xảy ra nếu tôi muốn kiểm tra PR của mình từ một chi nhánh trước khi hợp nhất thành chi nhánh?
Mymozaaa

1
@AntonAndreev thông số kỹ thuật hỗ trợ cả hai git+gitgit+https, cộng với những thứ khác. Tuy nhiên, tất cả các ví dụ cụ thể đều hiển thị a .gitbất cứ khi nào chỉ định nhánh.
merv

4
Phần lớn đã có trong OP (đang sử dụng pip install). Câu hỏi đặt ra là làm thế nào để làm điều đó bằng cách sử dụng conda trực tiếp , câu trả lời hàng đầu cung cấp.
Amelio Vazquez-Reina

29

condakhông hỗ trợ điều này trực tiếp vì nó cài đặt từ tệp nhị phân, trong khi cài đặt git sẽ từ nguồn. conda buildkhông hỗ trợ các công thức nấu ăn được xây dựng từ git. Mặt khác, nếu tất cả những gì bạn muốn làm là cập nhật những gì mới nhất và mới nhất của một gói, thì việc sử dụng pip bên trong Anaconda là tốt, hoặc thay vào đó, sử dụng setup.py developchống lại bản sao git.


Điều gì sẽ xảy ra nếu gói của bạn có một bản nhị phân phát hành được liên kết với nó?
Marcel Ramos

4

Tôi tìm thấy một tham chiếu đến điều này trong các vấn đề về căn hộ . Những điều sau đây sẽ hoạt động.

name: sample_env
channels:
dependencies:
   - requests
   - bokeh>=0.10.0
   - pip:
     - git+https://github.com/pythonforfacebook/facebook-sdk.git

Điều này bổ sung không có gì chưa có trong câu trả lời của @ AronAhmadia , điều này minh họa một cách tổng quát hơn rằng có nhiều tùy chọn trong một tệp lệnh request.txt thông thường.
merv
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.