巨坑 之 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 的區別和以及運行時的一些要注意的點。
總結
以上是生活随笔為你收集整理的巨坑 之 pip install 和 conda install 的区别 以及 查看 和 修改 虚拟环境下运行路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据处理之判断值是否为nan(空值)记录
- 下一篇: ubuntu 之 查看 cuda,cud