搞算法的同學也都明白,一個比較完美的python環境是多麼的重要。這篇文章打算把一些必備的python環境配置過程記錄下來,這樣不管是新到了公司實習或者就職,還是新換了電腦,都可以借鑑這篇快速把環境搭建起來啦 😉
由於我也是重裝了系統,所以算是從0開始搭建python環境,這次從anaconda安裝開始, 然後到cuda的相關安裝配置,再到cudnn的安裝配置,然後從anaconda中建立虛擬tensorflow和pytorch的虛擬環境,再各自的虛擬環境裡面安裝jupyter notebook並完成配置,安裝tensorflow的GPU版本和pytorch的GPU版本。這一整套下來,在自己機子上做一些簡單的模型實驗就沒有問題了。
雖然這套流程是目前是在Windows上做的,但具有普適性,在Linux上也是一樣的道理,只不過有些地方的操作可能不一樣,原理都是一樣的。
內容包括:
建立pytorch虛擬環境並安裝pytorchGPU版本Ok, let’s go!
2. Anaconda的安裝與常用命令Anaconda是為方便使用Python而建立的軟體包,其包含250多個工具包,多版本的Python解釋器和強大的虛擬環境工具,所以Anaconda是Python的全家桶。Anaconda可以使安裝,運行和升級環境變得更簡單,所以初步學習Python,這一個就足夠了。
Windows下的Anaconda安裝,是所謂的傻瓜式安裝,Linux下面的安裝,可以參考我之前整理的(https://zhongqiang.blog.csdn.net/article/details/112376293)。
下載之後,點擊Anaconda3-2019.07-windwos-x86_64.exe這個安裝文件進行安裝,選擇路徑,勾選加入環境變量,等待安裝完成即可(這些和普通軟體安裝一樣,一路回車操作),這裡面一定注意,不要把anaconda裝到C盤。因為你後面會有好多個虛擬環境,安裝很多包;另外,建議把conda命令加入到環境變量裡面去。驗證安裝成功:打開命令行,輸入conda,回車。看是否能進入conda環境。這個安裝比較簡單,不過多整理,下面是常用的命令,這些記好了之後,就能比較輕鬆的用anaconda管理虛擬環境,管理相關包了。打開命令行,輸入activate, 此時會進入一個root的默認虛擬環境, 如下:
這個是一個默認的虛擬環境,如果不想建其他環境,比較省事的方法就是把所有用到的包全安裝到這裡面,打造一個萬能環境,所以下面先整理關於包管理的命令
# 列出當前環境下安裝的包, 非常常用
conda list
# 實驗過程中,如果發現某些包沒有,直接安裝
conda install package_name # 也可以帶版本號
pip install package_name
# 如果發現裝錯版本了,想要卸載掉包
conda remove package_name
pip uninstall package_name
# 更新包
conda update package_name在一個虛擬環境裡面,掌握這幾個常用的命令即可,上面是比較省事的方法,只有一個環境,但我不太習慣這樣做,我一般喜歡建立多個虛擬環境,在每個虛擬環境下安裝特定的包去完成相應的實驗,因為有的項目可能需要python2,有的需要python3,有的可能是tf項目,有的可能是pytorch項目。這時候,用到的包會很不一致,所以,分類管理也是一個不錯的思路。那麼下面就是管理環境常用的命令:
# 查看已經有的虛擬環境 常用
conda env list
# 新建虛擬環境 可以指定python版本和一些包的版本
conda create -n env_names package_names # conda create -n tfenv python=3.7
# 進入虛擬環境,這時候面臨著對一些包的操作,就是上麵包的相關命令了
activate tfenv
# 離開虛擬環境
deactivate
# 刪除虛擬環境
conda env remove -n env_name這裡單獨拎出一個東西來,叫做共享環境,這個其實是非常有用的,它能讓其他人安裝項目中使用的所有包,並確保這些包的版本正確。比如開發了一個系統,讓別人來部署,但其他人可能不知道用的哪個python版本,哪些包等,盲目安裝又可能由於版本原因出現問題,所以共享環境就比發揮威力了。怎麼用?
# 將當前環境下安裝的包保存為YAML文件
conda env export > environment.yaml此時在當前目錄下就會發現一個導出的環境文件:
在GitHub上共享代碼時,我們往往會看到這樣的操作,一般人家都會給出創建環境的文件,這時候,我們git clone下項目之後,依賴這個文件就能輕鬆安裝依賴項。那麼導出的環境文件如何使用呢?activate tfenv
# 安裝所有包
conda env update -f=/path/to/environment.yaml如果不用conda,而是用pip的時候,可以導出一個txt文件,然後安裝:
pip freeze > requirements.txt # 導出文件
# 然後將該文件包含在項目的代碼庫中,其他項目成員即使在他的電腦上沒有安裝conda也可以使用該文件來安裝和我一樣的開發環境
pip install -r /path/requirements.txt關於anaconda,就整理這麼多,應該是夠用啦,後續如果有新大陸,還會再補充。
3. Jupyter的安裝與相關配置關於jupyter, 在安裝了anaconda, 默認的root環境下會有jupyter notebook的,但是新創建了虛擬環境之後,我們還需要重新安裝jupyter notebook。命令很簡單:
pip install jupyter notebook安裝jupyter很簡單,這裡想整理一個事情,就是修改默認的工作空間,在Windows上使用jupyter notebook不像Linux,Linux是在哪個目錄下啟動,就會默認哪個目錄為工作空間,但是Windows中不是這樣,那麼怎麼修改默認工作空間呢?
這個一般是修改jupyter的配置文件,如果沒有,就打開命令行,通過下面命令生成:
jupyter notebook --generate-config此時會在C盤user下面的.jupyter目錄下面產生一個jupyter_notebook_config.py的文件:
用Notepad++打開jupyter_notebook_config.py,找到c.Notebook,建立你的新工作路徑,取消注釋,c前面的#要去掉。
點擊保存,這下就修該好了路徑,cmd,輸入jupyter notebook,你就發現你的路徑已更改
這樣一般是能夠修改路徑的,如果還沒有,搜一下添加下環境變量,再修改下快捷方式。修改配置文件,不僅可以修改默認工作空間,還能修改默認啟動瀏覽器,想到想用的瀏覽器路徑,然後打開jupyter_notebook_config.py 找到App.browser = '',在這行下面添加以下三行代碼:
import webbrowser
webbrowser.register("chrome",None,webbrowser.GenericBrowser(u"C:\ProgramFiles (x86)\Google\Chrome\Application\chrome.exe"))
c.NotebookApp.browser = 'chrome'此時就修改了jupyter使用的默認瀏覽器。
在這裡插入圖片描述關於jupyter的配置就整理這麼多,但是原生的jupyter可能不是很好用,此時可以安裝一些擴展功能:
conda install -c conda-forge jupyter_contrib_nbextensions此時,打開jupyter就會有一些擴展功能:
這個還是非常強大的,可以對各種單元格加一些騷操作等。另外,這裡也記錄一個我比較喜歡的jupyter一個主題:
pip install jupyterthemes
# 一個不錯的主題
jt -t monokai -f fira -fs 13 -cellw 90% -ofs 11 -dfs 11 -T -N下面整理些jupyter單元格操作的快捷鍵:
執行當前cell,並自動跳到下一個cell:Shift Enter
執行當前cell,執行後不自動調轉到下一個cell:Ctrl-Enter
是當前的cell進入編輯模式:Enter
退出當前cell的編輯模式:Esc
刪除當前的cell:雙D
進入下一個cell:雙A (前面)或 Alt+Enter(後面)
為當前的cell加入line number:單L
將當前的cell轉化為具有一級標題的maskdown:單1
將當前的cell轉化為具有二級標題的maskdown:單2
將當前的cell轉化為具有三級標題的maskdown:單3
為一行或者多行添加/取消注釋:Crtl /
撤銷對某個cell的刪除:z
瀏覽器的各個Tab之間切換:Crtl PgUp和Crtl PgDn
快速跳轉到首個cell:Crtl Home
快速跳轉到最後一個cell:Crtl End
ctrl + ? #注釋
shift + tab # 查詢函數的註解
# jupyter 將本地.py文件導入
%load test.py #test.py是當前路徑下的一個python文件
# 運行python文件
%run file.py
!python myfile.py
4. Cuda和Cudnn的安裝CUDA是一個並行運算的一個計算平臺,而CuDNN是在上面的一個深度神經網絡的GPU加速庫。如果想用TensorFlow或者pytorch的GPU版本,這兩個是必須要安裝的。但前提,機子內得有顯卡,且是NVIDIA的。
4.1 Cuda安裝下載CUDA,這個是cuda-10.0的版本,如果安裝別的版本,也可以在這裡找。
連結:https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
下載完成後,打開下載的驅動, 開始安裝。這裡選擇自定義安裝:
自定義安裝這裡可以進行一些設置,否則有可能會導致安裝失敗,首先組件這裡取勾GeForce Experience,
然後, 我這裡安裝的時候,必須Visual Studio Integration也需要取消勾選。點開Driver comonents,Display Driver這一行,前面顯示的是Cuda本身包含的驅動版本是411.31
如果你電腦目前安裝的驅動版本號新於Cuda本身自帶的驅動版本號,那一定要把這個勾去掉。否則會安裝失敗(相同的話,就不用去取勾了)
接下來就等他安裝完成即可。結束之後, 怎麼看是否成功了呢?打開下面這個路徑,查看nvcc.exe,有這個說明CuDA安裝成功。
打開此文件夾,查看有沒有cuti64_100.dll4.2 Cudnn安裝
有這個cuti64_100.dll就說明CUPT1已成功。同樣的,來官網: https://developer.nvidia.com/rdp/cudnn-download, 選擇Cudnn for CUDA10.0, 這個需要登錄, 註冊個郵箱或者用微信登錄即可。
下載下來之後,解壓cuDNN:
將解壓後文件複製到CUDA文件夾下
接下來,要配置環境變量,我的電腦——>屬性——>高級系統設置——>環境變量在系統環境變量中找到path
當安裝完Cuda的時候,會自動的cuda的bin目錄以及libnvvp目錄加入到環境變量中,但是並沒有加CUPA和Cudnn的路徑,我們需要把這倆加入進來,這樣,在使用TensorFlow的時候,才不會報錯。
Cudnn和Cupta的路徑缺一不可,第三個不用管,安裝anaconda的時候,會自動加入。測試cuda, 打開命令行, 輸入nvcc \-V
5. 建立tf虛擬環境並安裝tf2.0GPU版本
這裡會顯示版本。這裡主要是tf2.0GPU版本的安裝, 有了上面的鋪墊,這裡會變得非常簡單。
首先,先建立一個tfenv的虛擬環境:
conda create -n tfenv python=3.7此時,我這裡竟然報了一個錯誤:
CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.ts這個我一開始以為是我anaconda換了安裝目錄導致的,但經過查閱資料,應該是源的問題,anaconda換源後無法創建新的虛擬環境。我的解決辦法:
找到這個.condarc文件,這個在我的C:\Users\ZhongqiangWu目錄下面,把https改成了http就好了。這樣就能創建出tfenv的虛擬環境,然後激活activate tfenv,進入環境。
// 安裝TensorFlow-gpu
pip install tensorflow-gpu=2.0.0-beta0此時等待下載,進行安裝即可。安裝完畢之後,測試是否安裝成功。
在當前環境下,輸入python進入環境,然後:
import tensorflow as tf
print(tf.test.is_gpu_available()) // 如果輸出True,說明安裝成功但在我這裡,導入TensorFlow的時候,報了一個錯誤:
ImportError: Could not find 'cudart64_100.dll'
TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable這個通過查資料,大部分得出的結論是這篇文章說的那樣, 即cuda版本的問題, 這裡會發現100,這其實意味著cuda要用10.0版本的,因為安裝完cuda的時候,會在cuda的bin目錄下面有這麼一個dll文件:
也就是TensorFlow在導入的時候,會去找有沒有這樣的一個文件, 當然我這裡tf2.0找的是10.0的這個,可能有的報錯說找不到101.dll或者102.dll這種,這顯然是cuda版本不匹配,要卸載掉當前的cuda, 重新安裝對應版本的,或者卸載掉當前版本的tf,重新安裝個別的版本的tf。但有種做法不提倡,有的竟然硬性的把這裡的100.dll修改名字,改成101.dll這樣,這叫投機取巧,並不是在解決問題。我當時就非常納悶, 我這裡明明有這個文件,並且我也把這個bin目錄加入到了環境變量裡面,為啥還會報上面的這個找不到這個文件的錯誤呢?其實是費了一些時間的,網上也沒找到好的辦法,最後,我想到,可能是因為我anaconda啟動的原因:
我anaconda這次安裝到了D盤裡面,然後依然是藉助Anaconda Prompt啟動了命令行,然後進入的虛擬環境。此時,我再想一個問題,我在虛擬環境裡面輸入python,然後import tensorflow的時候,此時tensorflow去找依賴的時候,是去哪裡找呢?
怎麼保證它這裡是找的環境變量裡面的配置呢?好像並沒有進行設置,所以我猜測,它這裡找dll的時候,可能是D:\Anaconda3\envs\tfenv\Library\bin目錄下去找相關的dll文件,如果找不到,可能不會自動的去總的環境變量裡面找,就直接報錯了。
這個啟發來自於,如果我們通過anaconda3自動安裝cuda和Cudnn的時候,此時cudart64_100.dll是在D:\Anaconda3\envs\tfenv\Library\bin目錄下的。而上面我們並沒有通過anaconda3安裝這倆哥們,而是手動安裝的,那麼在anaconda 自己的命令行裡面可能找不到。
所以關於這個問題,我最終的解決辦法,就是不用anaconda prompt啟動命令行進虛擬環境,而是直接cmd打開系統的命令行,然後直接輸入activate,進入root的環境,然後activate tfenv進入到虛擬環境,此時再運行測試,發現成功。這個應該是走環境變量裡面的文件了。
6. 建立pytorch虛擬環境並安裝pytorchGPU版本
此時,tf2.0的GPU版本安裝成功。這裡和上面就基本上是一樣的過程了,這裡是按照pytorch的GPU版本,首先是建立虛擬環境
conda create -n pytorch_gpu python=3.7此時,又出現CondaHTTPError: HTTP 000 CONNECTION FAILED for url, 真是服了, 此時我重新配置.condarc,修改成下面這個樣子:
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
show_channel_urls: true把vpn關掉,然後好使了。
接下來安裝torch和torchvision, 進入下面這個網站: http://download.pytorch.org/whl/torch_stable.html, 找符合系統版本、cuda版本的torch,採用搜索的方式找
我的是cuda10.0, python3.7版本,win10系統,64位。下載下來。
torchvision同樣的道理,把這兩個.whl文件下載下來。然後回到命令行, 安裝即可。pip install "torch-1.2.0-cp37-cp37m-win_amd64.whl"
pip install "torchvision-0.4.0-cp37-cp37m-win_amd64.whl"安裝完畢,進行測試,依然是進入python環境,然後輸入:
這樣,pytorch的GPU版本安裝完畢!有了這一整套流程,在自己機子上搭建python環境,跑模型實驗,就比較方便啦,不管是tf項目還是pytorch項目,都能用這一套環境實驗。Linux上其實也是這樣的流程,很多地方都是一樣的,原理都是通的,無法就是配置環境變量的時候不太一樣。
參考:
之前整理的文章連結也放過來:
大數據環境搭建下面的anaconda搭建
https://zhongqiang.blog.csdn.net/article/details/112376293
Python管理包工具anaconda安裝過程常見問題解決辦法
https://zhuanlan.zhihu.com/p/34337889
Python·Jupyter Notebook各種使用方法
https://blog.csdn.net/liuyanlin610/article/details/76231958
遠程連接GPU伺服器上的jupyter notebook解決方案
https://blog.csdn.net/wuzhongqiang/article/details/107555363
Windows下GPU版本詳細安裝教程
https://cloud.tencent.com/developer/article/1458665)
Windows下的Pytorch環境手把手搭建
https://zhongqiang.blog.csdn.net/article/details/104503860