簡體   English   中英

conda環境下獨占使用PIP有什么坑?

[英]What are the pitfalls of exclusively using PIP in a CONDA environment?

背景

官方文檔和這個 博客在同一個網站——推薦盡可能多的用conda安裝requirement然后使用pip。顯然這是因為conda不會意識到pip對依賴項所做的任何更改因此將無法解析依賴關系正確。

現在,如果一個人專門使用pip和 go 而沒有使用conda安裝任何東西,那么期望conda不需要知道pip conda成為隔離依賴項和管理版本的單純工具。 但是,這違背了官方建議,因為不會使用conda安裝盡可能多的要求

所以問題仍然存在:在conda環境中專門使用pip是否有任何已知的缺點?

類似話題

中的類似主題在此處有所涉及,但未涵蓋在conda環境中專門使用pip的情況。 我也來過這里:

不確定是否可以對此給出全面的答案,但我想到的一些主要事情是:

  1. 缺乏對非 Python 依賴解析的深度支持 隨着時間的推移,越來越多的捆綁非 Python 資源的輪子變得可用,但它遠不及 Conda 作為通用 package 管理器而不是特定於 Python 的管理器提供的覆蓋范圍。 對於任何進行互操作計算(例如, reticulate )的人,我希望 Conda 會受到青睞。

  2. 優化庫 有點與第一點相關,但 Anaconda 團隊已努力構建優化版本的包(例如,MKL for numpy )。 不確定是否可以通過 PyPI 獲得等效項。 1個

  3. 跨環境的浪費冗余 當包和環境位於同一卷上時,Conda 使用硬鏈接,並支持跨卷的軟鏈接。 這有助於最大限度地減少復制安裝在多個環境中的任何包。

  4. 使出口復雜化 導出時 ( conda env export ) Conda 不會選擇所有pip安裝的包 - 只有來自 PyPI 的包。 也就是說,它會錯過從 GitHub 等安裝的東西。如果有人做了 go pip-only 路由,我認為更可靠的導出策略是使用pip freeze > requirements.txt ,然后制作一個 YAML 之類的

    channels: - defaults dependencies: - python=3.8 # specify the version - pip - pip: - -r requirements.txt

    用它來重建環境。

綜上所述,我可以很容易地想象這些對某些人來說都不重要(大多數都是為了方便),尤其是那些傾向於純粹在 Python 中工作的人。然而,在這種情況下,我不明白為什么人們不會簡單地完全放棄 Conda 並使用特定於 Python 的虛擬環境管理器。


[1]如有不明之處請指正。

暫無
暫無

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

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