前提:已安裝了anaconda,cython已安裝:conda install -c anaconda cython,後面無法編譯老出各種錯誤:沒有***var.bat文件或者gcc.exe failed 等。。。下面是摸索出的正確道路:
1. 下載mingw-get-setup.exe, http://www.mingw.org/wiki/Getting_Started
2. 安裝gcc-mingw-4.3.3-setup.exe, https://github.com/develersrl/gccwinbinaries/releases
【上面兩步我都做了,其實也不知道有沒有用因爲我極度懷疑4步驟纔是精華,但是mingw對其他語言lua等也作用很大還是安裝了。做了步驟2就貌似不用做1,因爲2也會安裝1】
並且將C:\MinGW\bin加入了windows系統變量,自創文件"Anaconda文件夾下的Lib\distutils\distutils.cfg",內容如下:
[build]
compiler = mingw32
3. 換conda的channel爲清華源,不然後面conda install的速度太慢了:
來源 https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
複製下面文字到windows用戶目錄下的 .condarc 文件
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
4. conda install libpython m2w64-toolchain -c msys2
【-c msys2寫不寫無所謂,因爲-c指定channel,我們上面設置了default channnel conda會自己找的】
5. 準備setup.py文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(name='Hello world app',
ext_modules=cythonize("hello.pyx"))
【格式一定要一樣,不然可能出現錯誤】
和hello.pyx:
def say_hello_to(name):
print("Hello %s!" % name)
6. dos窗口運行:python setup.py build_ext --inplace
無報錯
7. 測試:文件hello_yyy.py:
from hello import say_hello_to
say_hello_to("Yang, Yiyan")
dos輸出:(base) Your_path\hello>python hello_yyy.py
Hello Yang, Yiyan!