Conda env not isolate
一個神奇的 bug(?) 或是 Feature
問題
我們希望各個 environment 之間是獨立的,但其實
- 在 Conda environment 中,仍然會參考到
~/.local
中的 package pip install --user xxx
使用--user
,package 會被安裝在~/.local
裡面- 若
~/.local/lib/python3.x/site-packages
裡面已經很多東西,會發現即使是新的環境,pip list
仍會抓到很多東西。
python -m site
解決方法
獨立 Conda env
如果 ~/.local/lib/python3.x
不存在,就不會有任何問題。如果家目錄的環境已經亂糟糟,設定 env vars PYTHONNOUSERSITE
,讓 conda 環境不要引入 ~/.local
。
conda env config vars set PYTHONNOUSERSITE=1 -n myenv
正確安裝 package
- 使用
conda install
pip install
不要帶有--user
- 要注意有沒有在其他地方設定過,例如
~/.pip/pip.conf
- 要注意有沒有在其他地方設定過,例如
查看 package 被安裝在哪裡
pip list -v
- 一個超級長的討論串: https://github.com/conda/conda/issues/7173
- PEP 說明為什麼要有
~/.local
這個資料夾 https://peps.python.org/pep-0370/ - 一個點出這件事的文章: https://medium.com/@leopardsaga/problems-caused-by-conda-does-not-isolate-the-pyhon-user-site-packages-942fe4e71680
- 官方 Document: https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#using-pip-in-an-environment