Windows 10安裝配置Theano(轉載)
前兩天,看書的時候,測試書中的程式碼。結果,各種報錯,更加無語的是Python明明安裝了Theano模組,匯入模組的時候,還是報錯。報錯資訊如下:
這個是在PyCharm中執行時的報錯資訊You can find the C code inthis temporary file: c:\users\darker\appdata\local\temp\theano_compilation_error_wdw7zl
Traceback(most recent call last):File"t.py", line 9,in<module>import theano
File"D:\Python27\lib\site-packages\theano\__init__.py" , line 110,in<module>from theano.compile import(File"D:\Python27\lib\site-packages\theano\compile\__init__.py", line 12,in<module>from theano.compile.mode import*File"D:\Python27\lib\site-packages\theano\compile\mode.py", line 11,in<module>import theano.gof.vm
File"D:\Python27\lib\site-packages\theano\gof\vm.py" , line 673,in<module>from.import lazylinker_c
File"D:\Python27\lib\site-packages\theano\gof\lazylinker_c.py", line 127,in<module>
preargs=args)File"D:\Python27\lib\site-packages\theano\gof\cmodule.py", line 2356,in compile_str
(status, compile_stderr.replace('\n','. ')))Exception :Compilation failed (return status=1): C:\Users\Darker\AppData\Local\Theano\compiledir_Windows-10-10.0.10586-AMD64_Family_22_Model_0_Stepping_1_AuthenticAMD-2.7.13-64\lazylinker_ext\mod.cpp:1:0: sorry, unimplemented:64-bit mode n.^include <Python.h>這個是命令列匯入模組的報錯資訊
E:\Projects\Python\20171209>python
Python2.7.13(v2.7.13:a06454b1afa1,Dec172016,20:53:40)[MSC v.150064 bit (AMD64)] on win32
Type"help","copyright","credits"or"license"for more information.>>>import theano
You can find the C code inthis temporary file: c:\users\darker\appdata\local\temp\theano_compilation_error_n7jfos
Traceback(most recent call last):File"<stdin>", line 1,in<module>File"D:\Python27\lib\site-packages\theano\__init__.py", line 110,in<module>from theano.compile import(File"D:\Python27\lib\site-packages\theano\compile\__init__.py", line 12,in<module>from theano.compile.mode import*File"D:\Python27\lib\site-packages\theano\compile\mode.py", line 11,in<module>import theano.gof.vm
File"D:\Python27\lib\site-packages\theano\gof\vm.py", line 673,in<module>from.import lazylinker_c
File"D:\Python27\lib\site-packages\theano\gof\lazylinker_c.py", line 127,in<module>
preargs=args)File"D:\Python27\lib\site-packages\theano\gof\cmodule.py", line 2356,in compile_str
(status, compile_stderr.replace('\n','. ')))Exception:Compilation failed (return status=1): C:\Users\Darker\AppData\Local\Theano\compiledir_Windows-10-10.0.10586-AMD64_Family_22_Model_0_Stepping_1_AuthenticAMD-2.7.13-64\lazylinker_ext\mod.cpp:1:0: sorry, unimplemented:64-bit mode n.^include <Python.h>>>>
Copy向度娘和谷哥詢問,結果沒找到怎麼解決方案。於是就順著潮流,走進Anaconda的懷抱。它裡面集成了很多關於python科學計算的第三方庫,用起來方便。
安裝Anaconda
英文參考文件:http://deeplearning.net/software/theano/install_windows.html
1、下載Anaconda安裝包
我的系統是64位的,所以我選擇的是包含 Python 2.x 版本的Anaconda,也就是Anaconda2-5.0.1-Windows-x86_64.exe,其大小為499 MB (524,040,968 位元組), 下載連結是https://repo.continuum.io/archive/Anaconda2-5.0.1-Windows-x86_64.exe。
2、移除Python環境變數
網上很多都是把之前的Python解除安裝,我感覺不需要,把相關的Python的環境變數刪除就可以了。例如:我的Python安裝到D盤的根目錄,我只需要把環境變數中的Python變數刪除就可以了,等需要的時候,添上就又可以運行了。
3、安裝Anaconda
需要注意的是安裝位置的剩餘空間應該至少有3GB,因為安裝的時候,臨時檔案釋放到安裝的目錄中,再加上安裝後的2.3GB(我安裝的版本的大小)。如果中間空間不足,這就很尷尬,安裝會直接中斷,然後需要重新安裝。安裝很耗費時間。我安裝的位置是D盤根目錄,即 D:\Anaconda2
。之後就是漫長的等待了,我的電腦比較低端,當時安裝了應該有1個多小時吧。
4、安裝MinGW
開啟命令列或者開啟剛才安裝的Anaconda Prompt,輸入conda install mingw libpython
,等待安裝完成。之後,MinGW會安裝到Anaconda目錄下。
5、安裝Theano
使用 pip 安裝Theano,在命令列中輸入 pip install -i https://pypi.douban.com/simple Theano
,這個是借用豆瓣的源,可以加速安裝,適用於Python官網網路不好的時候。也可以直接輸入pip install Theano
回車。
6、環境變數配置
全部安裝好後,一共需要配置下列這些環境變數。
D:\Anaconda2
D:\Anaconda2\Scripts
D:\Anaconda2\Library\bin
D:\Anaconda2\MinGW\bin
D:\Anaconda2\MinGW\x86_64-w64-mingw32\lib
Copy有的文章中寫到新建環境變數值,把安裝的Theano新增進去。操作步驟(Windows 10):此電腦 -> 系統屬性 -> 高階系統設定 -> 環境變數。在系統變數上點選“新建”。
變數名:PYTHONPATH
變數值:D:\Anaconda2\Lib\site-packages\theano (此為我的路徑)
Copy另外需要在使用者根目錄下新建 .theanorc.txt
,按“Win+R”快捷鍵,然後輸入“cmd”回車後的第一個目錄就是使用者根目錄。例如:C:\Users\Darker
,這就是我的使用者根目錄。下面是.theanorc.txt
檔案內容,注意,cxxflags=-ID:\Anaconda2\MinGW 紅色部分是你安裝的目錄。
[global]
openmp=False[blas]
ldflags=[gcc]
cxxflags=-ID:\Anaconda2\MinGW
Copy測試程式碼
用上一篇的文章中的那個程式碼測試。程式碼為:
import theano
from theano import tensor
# declare two symbolic floating-point scalars
a = tensor.dscalar()
b = tensor.dscalar()# create a simple expression
c = a + b
# convert the expression into a callable object that takes(a,b)# values as input and computes a value for c
f = theano.function([a, b], c)# bind 1.5 to 'a' 2.5 to 'b' and evaluate 'c'
result = f(1.5,2.5)print(result)
Copy