我正在開(kāi)發(fā)一個(gè) Python 庫(kù),它依賴于多個(gè)包。我正在努力尋找最直接的方法來(lái)管理具有以下約束的所有這些依賴項(xiàng):其中一些依賴項(xiàng)僅作為 conda 包提供(從技術(shù)上講,源代碼是可用的,但構(gòu)建過(guò)程不是我想要的)其他依賴項(xiàng)只能通過(guò) pip 獲得我需要在可編輯或開(kāi)發(fā)者模式下安裝我自己的庫(kù)我經(jīng)常需要使依賴項(xiàng)保持最新我當(dāng)前的初始安裝設(shè)置:新建conda環(huán)境安裝 conda-only 依賴項(xiàng)conda install ...安裝我的圖書(shū)館pip install -e .此時(shí),安裝了一些包,現(xiàn)在由 conda 管理,其他包由 pip 管理。當(dāng)我想更新我的環(huán)境時(shí),我需要:更新環(huán)境的 conda 部分conda update --all手動(dòng)更新環(huán)境的pip部分我的問(wèn)題是這是不穩(wěn)定的:當(dāng)我更新所有 conda 包時(shí),它確保它管理的包的一致性。但是,我不能保證整個(gè)環(huán)境保持一致,我剛剛意識(shí)到我缺少一些更新,因?yàn)槲彝洐z查環(huán)境的 pip 部分的更新。最好的方法是什么?我想過(guò):使用 conda 的pip 互操作性功能:這似乎可行,但我得到了一些可疑的結(jié)果,可能是因?yàn)槲沂褂昧薳xtras_require由于 pip 可以看到 conda 包,因此初始安裝是一致的,這意味著我可以在需要更新時(shí)簡(jiǎn)單地重新安裝所有內(nèi)容。這有效但并不十分優(yōu)雅。
1 回答

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