Anaconda+Pycharm環(huán)境下的PyTorch配置方法
寫給新手的話
pycharm是什么,為什么讓我指定interpreter
記事本
最開始寫C語言代碼的時候,人們使用vi,記事本等軟件寫代碼,寫完了之后用GCC編譯,然后運行編譯結(jié)果,就是二進制文件。python也可以這樣做,用記事本寫完代碼,保存成如test.py的文件后,通過命令python test.py可以運行這一文件。最初的C語言代碼都是通過這種方式寫的。但是人們很快發(fā)現(xiàn)了一個問題,就是這么弄太麻煩了,編寫用vi,運行得切出去用shell,出錯了再切回vi改代碼。這要是編寫、運行、調(diào)試都能在同一個窗口里進行,再來點語法檢查,高亮,顏色,代碼提示,那寫代碼的效率不就高多了嗎?所以就有了Microsoft Visual C++等寫代碼工具,這些工具除了提供方便的文本編輯功能,還能夠連接到編譯器(C/C++)、解釋器(java,python,R),把編譯器和解釋器的運行結(jié)果顯示在自己的界面上,這些工具被稱為IDE(集成開發(fā)環(huán)境)。正因為編譯器,解釋器不是它的組成部分,pycharm中每個項目都要指定一個interpreter才能運行。即某個路徑下的python.exe。其他的IDE也都要指定運行環(huán)境。
pip又是什么
應(yīng)用商店 python和java一樣,運行起來需要各種包的支持。java興起的最開始,開源jar包作者在各自的網(wǎng)站上面發(fā)布自己的包,需要用的開發(fā)者就去他們的網(wǎng)站上下載,然而很快就出現(xiàn)了一個問題,如果一個大型工程需要用到幾十個,甚至幾百個jar包,一個個翻網(wǎng)站下載顯然是非常勞累的。所以就有了maven和gradle,他們自己建了maven倉庫和gradle倉庫,就像IOS應(yīng)用商店一樣,開源jar包的作者會把各種版本的jar包統(tǒng)一上傳到倉庫,開發(fā)者統(tǒng)一下載,非常方便。 python問世的時候,java的maven和gradle早已流行多年,python官方也吸取了經(jīng)驗,直接官方內(nèi)置pip工具,官方經(jīng)營pip倉庫。正式的名稱叫做包管理工具。 conda的功能之一也是包管理工具。
conda,vitualenv,pipenv 又是什么
照片管理系統(tǒng) python版本繁多,版本之間的區(qū)別較大。這種不兼容激化了矛盾,當一臺機器上存在多個python項目,而這些項目又各自依賴于不同的python版本以及各個不同版本的包,這些包對于python版本又非常敏感。即使有pip,配置環(huán)境也變成了一件令人絕望的事。以往java等語言沒有這么激烈的矛盾,是因為它們沒有這么多版本,而且版本之間也能大體兼容。所以人們就想,如果能把pip配置出來的結(jié)果“照”下來。不同項目用不同的“照片”,這問題不就解決了嗎。這類任務(wù)通常都是靠虛擬化技術(shù)。
- 傳統(tǒng)的虛擬機可以勝任這個任務(wù),但是運行效率有損失,消耗資源多,管理不靈活。
- 新晉的
docker容器比虛擬機更加輕量,更加靈活,但對于這個任務(wù)來說,還是同樣的缺點。
于是conda等軟件應(yīng)運而生,它不是虛擬機,沒有使用虛擬化技術(shù),自然就沒有運行效率損失。它只是一個物理機上的管理軟件,可以把它想象成一個照片管理系統(tǒng),只不過它管理的照片有點特殊,叫做虛擬環(huán)境,它是某個python運行環(huán)境,里面已經(jīng)裝好了一些特定版本的特定包。 注意:pip和pipenv是兩個東西,不可混為一談。
anaconda是什么,anaconda和conda是什么關(guān)系,為什么要裝anaconda
XX照片管理系統(tǒng)+XX全家桶 anaconda和miniconda同為conda官方推薦的conda工具。anaconda和conda的關(guān)系,就像github和git的關(guān)系,anaconda不光包含了conda命令行軟件,還包含了多如牛毛的預(yù)裝python包,以及令人瞠目結(jié)舌的黑科技全家桶。我們裝anaconda主要是沖著conda管理python運行環(huán)境比較方便的原因,以及它那一大堆預(yù)裝包。雖然其他的我們用不到,但是大樹底下好乘涼嘛。
下文所述兩種配置方法異同
下面有兩種pytorch環(huán)境配置方法,推薦使用第一種,即使用conda的pytorch環(huán)境配置方法。第二種費時費力。這是親測的結(jié)果。不禁慨嘆還是conda好用,手動擼環(huán)境猶如小米加步槍啊。
使用conda的pytorch環(huán)境配置方法安裝anaconda下載anaconda
在https://www.anaconda.com/distribution/ 找到合適的安裝包,得到下載鏈接后進行下載
https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
安裝anaconda
所有步驟參照官方文檔 https://docs.anaconda.com/anaconda/install/linux/
bash Anaconda3-2019.03-Linux-x86_64.sh
使用conda組裝pytorch虛擬環(huán)境安裝pytorch到本地conda倉庫中
到pytorch官方網(wǎng)站找到合適的安裝命令 https://pytorch.org/get-started/locally/ 注意:CUDA是使用GPU進行計算的組件。
conda install pytorch-cpu torchvision-cpu -c pytorch
使用下面的命令可以看到conda倉庫中的torch
conda list |grep torch
創(chuàng)建新的conda虛擬環(huán)境
官方文檔
https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html
conda create --name pytorch-py36 --channel pytorch python=3.6 pytorch-cpu torchvision-cpu
使用conda虛擬環(huán)境
activate pytorch-py36python
在打開的python命令行里輸入
import torchimport torchvisionimport numpy
不報錯則說明構(gòu)建conda虛擬環(huán)境pytorch-py36成功。 注意:pytorch-py36默認在anaconda目錄下的envs文件夾中。
在pycharm中使用conda虛擬環(huán)境將自己創(chuàng)建的conda虛擬環(huán)境pytorch-py36添加到pycharm的interpreter可選列表中
在pycharm新建工程,或在files->settings->project:<xxx>->project interpreter界面,可以設(shè)定project interpreter。
新建工程界面,選擇Existing enviroment,點擊...按鈕,會彈出添加界面。settings界面,點擊齒輪按鈕,選擇Add,會彈出添加界面。在添加界面左側(cè)選擇Conda Environment,右邊選擇Existing environment,再點擊...按鈕添加一個已經(jīng)存在的conda虛擬環(huán)境,即剛剛構(gòu)建的pytorch-py36。

使用已經(jīng)添加進來的虛擬環(huán)境pytorch-py36
在interpreter列表中選擇剛剛添加的interpreter。如果需要對剛添加的interpreter改名,比如把python 3.6 (3)改成pytorch-py36,則點擊齒輪按鈕,點擊show all,里面可以改名。

大功告成!
試著使用import torch,import torchvision這樣的語句,不會報錯則成功。
pytorch手動配置方法源碼安裝python3.6.7下載python3.6.7
cd ~wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tgz
創(chuàng)建目錄,改名
mkdir ~/pythonmkdir ~/python/python367mv ~/Python-3.6.7.tgz ~/python/python367.tgz
解壓縮
cd ~/pythontar xvf python367.tgz
源碼安裝zlib
zlib是python需要的依賴庫,必須提前安裝。如果有管理員權(quán)限,只需用包工具即可安裝,如sudo apt-get install zlib1g-dev;因為沒有管理員權(quán)限,所以采用源碼安裝??梢杂靡韵聝蓷l命令確認zlib是否存在。
ls /usr/include |grep zlibls /usr/lib |grep zlib
如果任意一條輸出為空,則說明zlib不存在,需要安裝。 注意:|grep可以跟在任意命令之后,對該命令的輸出結(jié)果進行搜索,只顯示跟搜索內(nèi)容有關(guān)的部分。
cd ~/python/Python-3.6.7/Modules/zlibmkdir ~/python/zlib./configure -- prefix=/home4/grad4/wzhao1/python/zlibmake install
然后將zlib加入到GCC的include和lib路徑中。
export C_INCLUDE_PATH=~/python/zlib/includeexport CPLUS_INCLUDE_PATH=~/python/zlib/includeexport LD_LIBRARY_PATH=~/python/zlib/libexport LIBRARY_PATH=~/python/zlib/lib
注意:此處的路徑修改僅對當前shell有效,關(guān)閉shell或斷開重連都會導(dǎo)致路徑失效。因為我們只需要編譯一次,所以采用這種方式。想查看這兩個路徑的當前值使用echo命令,即echo $C_INCLUDE_PATH。如果想要每次都生效,可以將export命令寫入.bashrc中。 注意:GCC編譯時搜索的路徑遠比這些變量多,這些變量只是其中的一部分,且通常默認為空,也不是最優(yōu)先的。比如最常見的,也是一般情況下最優(yōu)先的搜索路徑是/usr/include和/usr/lib,也就是剛才判斷zlib是否存在的命令中搜索的路徑。 注意:四個變量含義:C頭文件路徑(.h),C++頭文件路徑(.hpp),動態(tài)鏈接庫路徑(.so),靜態(tài)鏈接庫路徑(.a)。
編譯安裝
cd ~/python/Python-3.6.7/./configure -- prefix=/home4/grad4/wzhao1/python/python367makemake install
如有報錯,必須停下來解決問題。如果一直沒有報錯,則會安裝成功。 注意:--prefix后面的參數(shù)必須是絕對路徑,不能出現(xiàn)~,.,..這樣的相對路徑。echo ~可以顯示處當前用戶~目錄的絕對路徑,如/home4/grad4/wzhao1。--prefix后面的參數(shù)簡單理解,就是windows下的安裝路徑。 注意:以上過程是自動化編譯,./configure這種可運行文件一般顯示為綠色,它的作用是根據(jù)當前環(huán)境,制定編譯策略,即Makefile。C/C++語言與java,python,scala,R等高度現(xiàn)代化的編程語言不同,它的部分語言特性是根據(jù)編譯時環(huán)境而定的,這一點頗受詬病。如long,int型的數(shù)據(jù)類型長度竟然取決于編譯時環(huán)境。
驗證安裝1
cd ~/python/python367/bin./python3.6
如果python命令行正常啟動,且顯示版本也是正確的3.6.7,則安裝成功。
備份編譯包
同一環(huán)境,尤其是同一服務(wù)器下通常不需要重新編譯,只要有人編譯出一份并備份保存,所有人都能直接下載使用。為了這個目的,以及備份的目的,我們要把編譯結(jié)果保存成壓縮包。
cd ~/pythontar cvf python367.tgz python367
建立軟連接
軟連接可以簡單理解為windows下的快捷方式,建立軟連接的目的是為了更方便地使用我們安裝的python。從這個步驟開始都不做,python也能正常使用。進入~/python/python367/bin下查看目前的情況。
ls -lh
可以看到,軟連接是淺藍色,并標注了它指向的目標。如python3 -> python3.6,而且可以看到python3.6的文件大小是12M,而python3的大小是9(字節(jié))。我們建立名為python和pip的軟連接。
ln -s python3.6 pythonln -s pip3.6 pip
配置環(huán)境變量
修改文件~/.bashrc,添加python3.6.7環(huán)境變量。 注意:這個文件內(nèi)的變量是用戶變量。系統(tǒng)變量在/etc/profile。
cd ~vim .bashrc
注意:用vim進行編輯時,不可使用鼠標。屏幕下端是狀態(tài)欄。打開文件時,默認為瀏覽狀態(tài)。輸入a或i可以進入編輯狀態(tài)。按ESC回到瀏覽狀態(tài),在瀏覽狀態(tài)下,輸入:q!強制退出不保存,輸入:wq保存退出。
export PYTHON_HOME="~/python/python367"export PATH="$PYTHON_HOME/bin:$PATH"
修改完環(huán)境變量后,不會立即生效。用這個命令讓環(huán)境變量立即生效。
source .bashrc
驗證安裝2
python --versionpip --version
顯示下列結(jié)果即安裝成功
Python 3.6.7pip 10.0.1
今后該用戶的shell里只要輸入python和pip,默認就是使用剛才安裝的python和pip。
在python3.6.7中安裝pytorch下載pytorch
在 https://pytorch.org 找到合適的安裝包,得到下載鏈接后進行下載
wget https://download.pytorch.org/whl/cpu/torch- 1.0.1.post2-cp36-cp36m-linux_x86_64.whl
使用pip安裝pytorch
pip install torch-1.0.1.post2-cp36-cp36m- linux_x86_64.whlpip install torchvision
注意:torch-1.0.1.post2-cp36-cp36m-linux_x86_64.whl不能改名,因為pip會嚴格檢查文件名是否符合當前python版本,不符合則拒絕安裝。
驗證安裝
pythonimport torchimport torchvision
不報錯則安裝成功。
在Pycharm下使用pytorch
在新建工程的時候選擇existing interpreter,指定之前安裝的python.exe即可。(即~/python/python367)對于已經(jīng)存在的工程,可以按如下步驟操作(如果project interpreter里面有我們要的python.exe,就不需要再add了)

總結(jié)
到此這篇關(guān)于Anaconda+Pycharm環(huán)境下的PyTorch配置方法的文章就介紹到這了,更多相關(guān)Anaconda Pycharm PyTorch配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python字典如何獲取最大和最小value對應(yīng)的key
這篇文章主要介紹了python字典如何獲取最大和最小value對應(yīng)的key問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
python3 pandas 讀取MySQL數(shù)據(jù)和插入的實例
下面小編就為大家分享一篇python3 pandas 讀取MySQL數(shù)據(jù)和插入的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04
python游戲?qū)崙?zhàn)項目之智能五子棋簡易版
利用Python實現(xiàn)智能五子棋,實現(xiàn)之后發(fā)現(xiàn)我玩不贏它!本篇為你帶來用python編寫的五子棋小游戲,文中給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值2021-09-09
python爬蟲 基于requests模塊發(fā)起ajax的get請求實現(xiàn)解析
這篇文章主要介紹了python爬蟲 基于requests模塊發(fā)起ajax的get請求實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2019-08-08
python利用dir函數(shù)查看類中所有成員函數(shù)示例代碼
這篇文章主要給大家介紹了關(guān)于python如何利用dir函數(shù)查看類中所有成員函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習或者使用python具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習下吧。2017-09-09
Python中的sys.stdout.write實現(xiàn)打印刷新功能
今天小編就為大家分享一篇Python中的sys.stdout.write實現(xiàn)打印刷新功能,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02

