Outline
今天新建了個conda虛擬環境,需要安裝某個庫,進行了以下操作:
conda activate py38 # 激活名為py38的虛擬環境 pip install mdlib -i http://nexus.td.internal/nexus/repository/pypi_group/simple # 安裝需要的庫(源是我們自己搭建的nexus)

然而pip安裝完后,發現安裝到這里了: .local/lib/python3.8/site-packages
按理說應該安裝到這里:/opt/conda/envs/py38/lib/python3.6/site-packages
指定pip安裝:

直接指名道姓(指定pip)的安裝,這下應該可以了吧;
然並卵,依然會自動安裝到 .local/ 下面。
解決
查看包的搜索路徑
可以通過 python -m site(類似於 sys.path()的效果) 查看當前環境的包搜索路徑(pip默認安裝路徑
以及用戶環境的目錄

因為 pip install 背后實質上是通過 setup.py 來安裝python包的;
而 setup.py 中用到 setuptools,安裝過程中會用到sys.path信息,雖然上面sys.path中的信息包含 envs/py38,這個虛擬環境路徑;
而且sys.path中的目錄排序是有優先級順序的(envs/py38 路徑排在.local后面)
再者,當前用戶環境目錄也是 .local/, 且會最優先用戶環境目錄進行安裝目錄的確認;
修改用戶環境目錄
注:修改的前提是已經進入虛擬環境,這樣修改的是虛擬環境下的配置,而不會影響到全局
修改 site.py 文件:
sudo vim /opt/conda/envs/py38/lib/python3.8/site.py # 是否sudo看情況

默認 USER_SITE、USER_BASE 都為None (用的時候會默認填充當前用戶的)
接下來把他們修改為conda環境的目錄:

OK,再去執行下pip install 試試;
(pip install 的內容成功安裝到虛擬環境下)
