# pipenv v.s. conda 請ChatGPT比較差異
## 2024-6-14 更新
其他選擇
1. [poetry](https://blog.kyomind.tw/python-poetry/)
2. [conda + poetry](https://stackoverflow.com/questions/70851048/does-it-make-sense-to-use-conda-poetry)
3. [pixi](https://pixi.sh/)
## 非常重要
:::info
請用 python -V 檢查版本
不是用 py -V
:::
:::danger
懶人包: 不要用 conda install
:::
:::success
使用 conda 建立 virtual env 的流程
1. conda create -n envname python=3.9
- 或是使用 conda create python=3.9 --prefix .\.venv 將虛擬環境建立在指定路徑
- -n 和 --prefix 不可同時使用
2. conda activate envname
3. pip install -r requirements.txt
:::
:::success
使用 pipenv 建立 virtual env 的流程
1. mkdir .venv
2. pipenv shell
~~3. pip install -r requirements.txt~~
**使用 pipenv install 才會更新 pipfile **
3. pipenv install -r requirements.txt
:::
當你看到 requirements.txt 不是使用 conda 產生的時候, conda install --file requirements.txt (最好指定channel來安裝 conda install --file -c conda-forge requirements.txt ) 會出現 packagesnotfounderror , 這個時候!! 請改用 pip install 的方式進行安裝
- 原因: pip 和 pipenv 是從 https://pypi.org/ 抓 package, conda 是從 https://anaconda.org 抓 Package, 來源不同
:::info
如果你就是要用 conda install => 請照著 error message 的指示 => 到 https://anaconda.org 將你的套件一個找出來
:::
## 重要決定性差距!!
- conda 可以在 OS只有安裝 python 3.7的情況下, 建立一下 python 3.8的虛擬環境
![](https://hackmd.io/_uploads/Syo660cv2.png)
![](https://hackmd.io/_uploads/SyVPAAcvh.png)
- pipenv: 先裝 python 才裝 pipenv
- conda: 可以不裝 python 直接裝 conda
## python 有類似 https://www.npmjs.com/ 的平台可以看package訊息的嗎
是的,Python 有類似 npmjs.com 的平台,可以用來查看 Python 的套件資訊和文件。其中一個常用的平台是 PyPI(Python Package Index)。PyPI 是 Python 社群維護的一個套件庫,提供了大量的 Python 套件供開發者使用。
你可以在網站 https://pypi.org/ 上訪問 PyPI。在該網站上,你可以搜尋特定的 Python 套件,查看它們的詳細資訊、版本號、文件和相依性等。你還可以透過 PyPI 下載和安裝這些套件,以及瀏覽套件的源碼。
以下是使用 PyPI 的一些步驟:
1. 前往 https://pypi.org/。
1. 在搜尋欄中輸入你要查找的套件名稱。
1. 點擊搜尋按鈕。
1. 你將看到相關的套件結果列表,點擊其中一個套件以查看詳細資訊。
1. 在套件頁面上,你可以看到套件的描述、版本號、文件連結等。
1. 你還可以進一步探索套件的相依性、依賴關係圖表、套件作者等。
在使用 PyPI 時,你可以使用命令行工具 pip 來安裝套件。例如,若要安裝名為 requests 的套件,你可以執行以下命令:
```Copy code
pip install requests
```
這將會從 PyPI 下載並安裝 requests 套件。
希望這能幫助到你!如果有任何其他問題,請隨時提出。
## 可以比較一下conda 和 pipenv的差異嗎
當談到 Python 套件管理和虛擬環境時,兩個常見的工具是 Conda 和 Pipenv。以下是它們的一些差異:
1. 套件管理方式:
- Conda:Conda 是一個跨平台的套件管理系統,可以處理 Python 套件和非 Python 套件。它使用底層的包管理器(例如 conda、mamba)來下載、安裝和管理套件。
- Pipenv:Pipenv 是一個專注於 Python 的套件管理工具。它使用 pip(Python 套件管理工具)來安裝和管理套件。
2. 虛擬環境管理:
- Conda:Conda 具有內建的虛擬環境管理功能。你可以使用 conda create 命令創建和管理獨立的虛擬環境。這些虛擬環境可以包含不同版本的 Python 解釋器和套件,並且可以輕鬆切換和共享。
- Pipenv:Pipenv 也提供虛擬環境管理的功能,但它是建立在虛擬環境工具 virtualenv 的基礎上。Pipenv 會自動為每個專案創建獨立的虛擬環境,並跟蹤每個專案的相依性。
3. 鎖定套件版本:
- Conda:Conda 可以處理套件之間的相依性,並生成一個稱為 environment.yml 的文件,其中包含了每個套件的確切版本號。這樣可以確保你的環境可以準確重現,即使在不同的系統上也可以。
- Pipenv:Pipenv 使用 Pipfile 和 Pipfile.lock 文件來管理套件的相依性和版本號。Pipfile.lock 文件明確指定了每個套件的確定版本,以便在部署和共享專案時保持一致。
4. 社群支持和廣度:
- Conda:Conda 是一個較早的套件管理工具,擁有廣泛的社群支持和生態系統。它可以處理多種語言和平台的套件,包括 Python、R、C++ 等。在科學計算和資料科學領域中被廣泛使用。
- Pipenv:Pipenv 在 Python 社群中也有一定的使用者,尤其在開發 Web 應用和 Django 專案時受到歡迎。然而,它的使用者群體相對較小。
總結而言,Conda 是一個功能豐富且跨平台的套件管理系統,適用於處理 Python 和非 Python 套件,具有內建的虛擬環境管理和版本鎖定功能。Pipenv 則是專注於 Python 的套件管理工具,具有簡單易用的介面和虛擬環境管理能力。你可以根據自己的需求和專案特點選擇適合的工具。
## 依照這兩種社群活耀度 進行推薦
基於社群活躍度和廣度的考量,我會傾向推薦使用 Conda。以下是一些理由:
1. 廣泛的社群支持:Conda 擁有一個龐大的社群,特別在科學計算和資料科學領域非常受歡迎。這意味著你可以更容易地找到支援、教學和解決方案,並且能夠參與活躍的社群討論。
2. 跨平台和多語言支持:Conda 不僅支援 Python,還支援其他語言,如 R、C++ 等。它也適用於多個操作系統,包括 Windows、Mac 和 Linux,使得跨平台開發更加方便。
3. 內建虛擬環境管理:Conda 具有內建的虛擬環境管理功能,可以輕鬆創建、切換和共享環境。這使得在不同專案之間保持環境的獨立性成為可能,並且能夠避免套件相互衝突的問題。
4. 版本鎖定和可重現性:Conda 可以生成一個明確指定套件確切版本的 environment.yml 文件,確保你的環境可以準確重現。這對於專案的共享和部署非常有用,尤其在多人協作或跨系統部署時更為重要。
儘管 Pipenv 在一些特定的專案和使用情境下也很有價值,但考慮到社群活躍度和廣度,以及 Conda 的跨平台和多語言支持,我建議你使用 Conda 作為套件管理和虛擬環境管理工具。
### [virtual environment example](https://ithelp.ithome.com.tw/articles/10286663)
## [conda在windows安裝上遇到的問題](https://discuss.codecademy.com/t/setting-up-conda-in-git-bash/534473)
## 學習conda後的看法
建議使用 pip 而不用 conda 的原因
1. pip 和 pipenv 是從 https://pypi.org/ 抓 package, conda 是從 https://anaconda.org , 老實說我建議用官方原生地 pypi 抓套件比較好, 否則就要硬性規定之後統一都用 conda, 不然會出現 pip freeze 產生的 requirements.txt 用 conda install 的時候會噴錯誤 packagesnotfounderror
2. 在github上大多數的專案, 都是用 pip freeze 輸出 requirements.txt 或是手動寫, conda 對其他 python 專案相容性會不好
3. 由於 conda install 會無法安裝 pip freeze 產生出的 requirements.txt 導致你使用 conda 開完 virtual env 後, 仍需要 pip install 去安裝套件, 基於這一點 我就覺得應該捨棄 conda
或是 "不要使用 conda install"
- 補充: 不喜歡 pip freeze 可以用 pipreqs 產生 requirement.txt
## 最新的看法
conda 只用來建立 python 版本的環境
後續想怎麼用都可以, 用 pipenv 也可以
## 使用 conda 建立環境後使用 pipenv 建置開發環境流程
1. conda create -n py3.9 python=3.9
- 建立一個 python 3.9 的 conda 環境
2. conda activate py3.9
3. pip install pipenv
- 在這個 conda 環境安裝 pipenv (否則會執行base環境的pipenv)
4. mkdir .venv
5. pipenv shell --python 3.9
6. pip install -r requirements.txt
## 在 windows 使用 conda 的一些問題
1. 注意 python 版本
- 例如: conda會預設安裝 3.9.16 但是windows沒有這個版本, 就需要特別指定安裝 3.9.13