MAC OS 10.13.4 下paddlepaddle+Anaconda+Pycharm安裝與使用
20180719注:paddlepaddle官方文件宣告MacOS現在已經不再支援pip安裝。謹慎觀看,歡迎評論探討。
用一天多的時間完成了 MAC 下的 paddlepaddle+Anaconda+Pycharm 安裝與使用,記錄步驟如下。
1. 在anaconda的Environments中建立一個環境pp27
在anaconda已經完成安裝的情況下,開啟anaconda:在下部有一個+號Creat,輸入環境名稱“pp27”(可以換成你喜歡的其他名字)注意,一定要選擇python 2.7版本(因為paddlepaddle現在只支援2.7)!
當然,在終端Terminal中使用conda create方式建立也是一樣的,要指明python版本。
2. 安裝依賴檔案
通過在右上角搜尋,點選apply安裝:
gcc 4.8.5
cmake 3.9.4
swig 3.0.12
注1:看了一些其他的參考,go 版本>=1.8可以選擇性安裝(不安裝也可以),如果安裝通過Terminal的apt。
注2:pip,numpy也要有,一般都有;注意更新pip,版本要大於>=9.0.
注3:gcc,cmake 和 swig 版本也可以高於上述版本。
3. 安裝paddlepaddle
開啟Terminal,通過輸入 source activate pp27 進入剛才搭建的 python 2.7 的環境。
source activate pp27
如果在新開始的一行前面顯示(pp27)說明進入了該環境。pip安裝paddlepaddle:
pip install paddlepaddle
一般可以安裝(反正我是成功了-。-)。
4. paddlepaddle 和 anaconda 的相容問題
4.1 不關聯:顯示報錯
安裝好了paddlepaddle後,很激動很不冷靜很膨脹,開啟Pycharm -> preferences -> Project -> Project interpreter,找到pp27環境下的python 2.7編譯器。新增方法不再贅述,一般在/anaconda3/envs/pp27/lib/python2.7 下可以找到。
找了一個paddlepaddle的工程試一下,在官網上找到一個房價模型:1下載資料+2複製程式碼。
注意資料放在Pycharm工程的同一個檔案下。
執行後顯示報錯:
Fatal Python error: PyThreadState_Get: no current thread
Process finished with exit code 134 (interrupted by signal 6: SIGABRT)
4.2 報錯原因
查找了一些資料:MAC自帶 python 2.7,paddlepaddle 安裝後預設使用的是這一個。通過在 Terminal 通過 otool 查詢 _swig_paddle.so 依賴的檔案路徑可以看出(可以先在本機搜尋一下 _swig_paddle.so 所在的路徑再用 otool -L):
otool -L /anaconda3/envs/pp27/lib/python2.7/site-packages/py_paddle/_swig_paddle.so
綠線標識部分說明用的是本機自帶 python 2.7,但是以來的環境都在 anaconda 的 pp27 裡面,所以要把第三行替換掉,換成anaconda的pp27對應的 python 2.7。
4.3 關聯
也就是替換。在 Terminal 輸入:
install_name_tool -change /usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/Python /anaconda3/envs/pp27/lib/libpython2.7.dylib /anaconda3/envs/pp27/lib/python2.7/site-packages/py_paddle/_swig_paddle.so
也就是install_name_tool -change _swig_paddle.so檔案中的第三行 anaconda3下的libpython2.7.dylibl絕對路徑 _swig_paddle.so絕對路徑
上述後面兩個路徑可以在本機搜尋一下檔名稱,就可以看到了。
再次檢視:
otool -L /anaconda3/envs/pp27/lib/python2.7/site-packages/py_paddle/_swig_paddle.so
綠線標識部分說明替換成功。
5. 在 Pycharm 中測試 paddlepaddle 工程
可以顯示預測。
如有問題,歡迎批評指正。