conda虛擬環境下pip install 和 conda install 的區別 以及 查看 和 修改 虛擬環境下運行路徑


先來說明我的問題:首先我在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 並人為賦值即可。這樣我的問題到此就解決了。

問題思考

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

 

 

 因為這是實驗室的服務器大家共用,然后有人將自己的虛擬環境包路徑添加到了系統路徑中,因此,在我們的虛擬環境中運行程序時,python編譯后,找包時,優先去了該虛擬環境,才導致了我開頭的問題。我們只需將USER_SITE 和 USER_BASE 改成我們自己的路徑就好了(如果我們不想修改系統路徑的話,個人建議不要隨便修改系統路徑,因為機器是大家的)。

到此,我們就知道了在虛擬環境中使用pip install 和 conda install 的區別和以及運行時的一些要注意的點。
————————————————
版權聲明:本文為CSDN博主「NuerNuer」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41368074/article/details/107783636


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM