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
