簡體   English   中英

pip 從conda環境安裝時的依賴關系.yaml

[英]pip dependencies of dependencies when installed from conda environment.yaml

我正在嘗試為項目的用戶創建一個 conda environment.yml 文件。 一種依賴不是由 conda 分發的,但可以通過 pip+github 獲得。 我假設基於這個例子,我可以這樣做:

dependencies
    - pip
    - regular_conda_dep
    - depend_of_blah
    # Install in editable mode.
    - -e git+https://github.com/ourgroup/blah.git

但是 blah (depend_of_blah) 的依賴會發生什么? pip 會在 conda 之后安裝,以便只要我小心地包含它,它就會在 blah 之前安裝嗎? 稍后 blah 會干凈地更新,從 conda 獲得盡可能多的信息嗎?

或者我是否需要將 --no-deps 添加到 pip 行? 是否暗示這是神奇地完成的? 我沒有看到很多處理這個問題的高級示例,但根據我的經驗,在 pip/conda 混合中不使用 --no-deps 是一個真正的危險,pip 基本上劫持了任何沒有被使用的東西首先明確處理。

Conda 解析 YAML,並將依賴規范划分為 Conda 集和 Pip 集( code )。 僅使用 Conda 集來解決和創建初始環境。 1成功創建環境后,Conda將所有Pip規范寫入臨時requirements.txt代碼),然后在環境中使用python運行命令:

python -m pip install -U -r <requirements.txt>

所以,明確回答這個問題:如果blah所有依賴項都是通過 Conda 安裝的,並且它們安裝了足夠的版本,那么 Pip 應該只安裝blah並且保持 Conda 版本不變。 這是因為--upgrade-strategy的默認值是only-if-needed

否則,如果 Conda 依賴項部分沒有包含blah所有依賴項,那么 Pip 將安裝必要的依賴項。


[1]:從技術上講,如果 Conda 配置中設置了create_default_packages ,Conda 將首先使用這些包創建環境,然后安裝 YAML 文件中指定的依賴項。

您可以通過環境變量告訴 pip 忽略依賴項

PIP_NO_DEPS=1 conda env create -f myenv.yaml

文檔中:

pip 的命令行選項也可以使用PIP_<UPPER_LONG_NAME>格式設置環境變量。 破折號 ( - ) 必須替換為下划線 ( _ )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM