我正在開發一個 Python 庫,它依賴于多個包。我正在努力尋找最直接的方法來管理具有以下約束的所有這些依賴項:其中一些依賴項僅作為 conda 包提供(從技術上講,源代碼是可用的,但構建過程不是我想要的)其他依賴項只能通過 pip 獲得我需要在可編輯或開發者模式下安裝我自己的庫我經常需要使依賴項保持最新我當前的初始安裝設置:新建conda環境安裝 conda-only 依賴項conda install ...安裝我的圖書館pip install -e .此時,安裝了一些包,現在由 conda 管理,其他包由 pip 管理。當我想更新我的環境時,我需要:更新環境的 conda 部分conda update --all手動更新環境的pip部分我的問題是這是不穩定的:當我更新所有 conda 包時,它確保它管理的包的一致性。但是,我不能保證整個環境保持一致,我剛剛意識到我缺少一些更新,因為我忘記檢查環境的 pip 部分的更新。最好的方法是什么?我想過:使用 conda 的pip 互操作性功能:這似乎可行,但我得到了一些可疑的結果,可能是因為我使用了extras_require由于 pip 可以看到 conda 包,因此初始安裝是一致的,這意味著我可以在需要更新時簡單地重新安裝所有內容。這有效但并不十分優雅。
1 回答

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
官方文檔中關于管理還需要 PyPI 源或安裝的本地包的 Conda 環境的建議pip
是在 YAML 文件中定義所有依賴項(Conda 和 Pip)。就像是:
環境文件
name:?my_env channels: ?-?defaults dependencies: ?-?python=3.8 ?-?numpy ?-?pip ?-?pip: ???-?some_pypi_only_pkg ???-?-e?path/to/a/local/pkg
在這種環境中更新的工作流程是更新 YAML 文件(我建議將其置于版本控制之下),然后創建一個新環境或使用
conda?env?update?-f?env.yaml
就個人而言,我傾向于創建新的環境,而不是改變(更新)現有環境,并>=version
在 YAML 中使用最小約束(即 )。創建新環境時,它應該自動拉取最新的一致包。另外,可以保留環境的先前實例,以防在開發生命周期中需要回歸。
添加回答
舉報
0/150
提交
取消