1. 程式人生 > 其它 >conda虛擬環境下pip install 和 conda install 的區別 以及 檢視 和 修改 虛擬環境下執行路徑

conda虛擬環境下pip install 和 conda install 的區別 以及 檢視 和 修改 虛擬環境下執行路徑

以下內容轉載自:https://www.cnblogs.com/yibeimingyue/p/14660246.html

先來說明我的問題:首先我在anoconda下建立了自己的虛擬環境,並在我的虛擬環境中用pip安裝了對應版本的tensorflow,但是再呼叫的時候,我發現並沒有呼叫我安裝的tensorflow版本。導致我的程式碼無法執行。因此我產生了一個疑惑,pip安裝的包和conda安裝的包的位置是否不同,我在執行的時候到底用的是那個環境下的包。

注:miniconda3 和 我文中提到的anoconda3差不多,因為大部分是anoconda3,因此雖然機器上裝的是miniconda3,但文章中在寫的時候用的是anoconda3,只是命名的問題。

經查閱資料發現:

1.使用conda install在虛擬環境中安裝的包都存放在了/anoconda3/pkgs 這個路徑下,然後,我們在我們的虛擬環境中要用到或下載時先到該路徑下去找,若有則直接將其複製到我們的虛擬環境中包得存放位置:~/anoconda3/envs/xxx/lib/python3.6/site-packages/。若沒有,則先下載到/anoconda3/pkgs,在複製到虛擬環境包的路徑下。

2.而在虛擬環境中使用pip install 安裝時,則直接將包安裝在了~/anoconda3/envs/xxx/lib/python3.6/site-packages/路徑下。

問題分析

到這裡,我們就知道了二者安裝包後包所在的位置,那麼為什麼還會出現我上面的問題呢,原因就是,你雖然在你的虛擬環境下執行程式碼,但是你的實際執行環境並不一定就是你的包的安裝路徑,也就是說,你雖然在你建立的虛擬環境中將一切包都安裝好了,但是在執行程式碼,python在編譯時,程式並沒有去:~/anoconda3/envs/xxx/lib/python3.6/site-packages/這個路徑下呼叫。而是去了優先順序更高的別的路徑下呼叫,自然就會出現上述問題。那麼如何檢視,我當前虛擬環境的實際執行路徑呢?

我們使用 python -m site 來檢視,結果類似下面:

問題解決

檢視USER_SITE 和 USER_BASE 是否對應了你的包安裝的路徑。如果不是,你就要將其按照上面的格式修改:

修改方式:開啟 ~/anaconda3/envs/XXX/lib/python3.6/site.py

找到USER_SITE 和 USER_BASE 並人為賦值即可。這樣我的問題到此就解決了。

問題思考

那麼為什麼會產生我這個問題呢,我仔細分析了一下,後來發現:

先來說明我的問題:首先我在anoconda下建立了自己的虛擬環境,並在我的虛擬環境中用pip安裝了對應版本的tensorflow,但是再呼叫的時候,我發現並沒有呼叫我安裝的tensorflow版本。導致我的程式碼無法執行。因此我產生了一個疑惑,pip安裝的包和conda安裝的包的位置是否不同,我在執行的時候到底用的是那個環境下的包。

注:miniconda3 和 我文中提到的anoconda3差不多,因為大部分是anoconda3,因此雖然機器上裝的是miniconda3,但文章中在寫的時候用的是anoconda3,只是命名的問題。

經查閱資料發現:

1.使用conda install在虛擬環境中安裝的包都存放在了/anoconda3/pkgs 這個路徑下,然後,我們在我們的虛擬環境中要用到或下載時先到該路徑下去找,若有則直接將其複製到我們的虛擬環境中包得存放位置:~/anoconda3/envs/xxx/lib/python3.6/site-packages/。若沒有,則先下載到/anoconda3/pkgs,在複製到虛擬環境包的路徑下。

2.而在虛擬環境中使用pip install 安裝時,則直接將包安裝在了~/anoconda3/envs/xxx/lib/python3.6/site-packages/路徑下。

問題分析

到這裡,我們就知道了二者安裝包後包所在的位置,那麼為什麼還會出現我上面的問題呢,原因就是,你雖然在你的虛擬環境下執行程式碼,但是你的實際執行環境並不一定就是你的包的安裝路徑,也就是說,你雖然在你建立的虛擬環境中將一切包都安裝好了,但是在執行程式碼,python在編譯時,程式並沒有去:~/anoconda3/envs/xxx/lib/python3.6/site-packages/這個路徑下呼叫。而是去了優先順序更高的別的路徑下呼叫,自然就會出現上述問題。那麼如何檢視,我當前虛擬環境的實際執行路徑呢?

我們使用 python -m site 來檢視,結果類似下面:

問題解決

檢視USER_SITE 和 USER_BASE 是否對應了你的包安裝的路徑。如果不是,你就要將其按照上面的格式修改:

修改方式:開啟 ~/anaconda3/envs/XXX/lib/python3.6/site.py

找到USER_SITE 和 USER_BASE 並人為賦值即可。這樣我的問題到此就解決了。

問題思考

那麼為什麼會產生我這個問題呢,我仔細分析了一下,後來發現: