cython: 使用mingw編譯器

本文主要介紹在python和cython時(shí),如何配置使用mingw編譯器。

一耸采、準(zhǔn)備工作

  1. 安裝python和cython。
  2. 安裝mingw工育。注意python和mingw的位數(shù)必須一致虾宇。然后將mingw添加到Path環(huán)境變量。這里我使用的是64位python和mingw如绸。如下圖所示:
    image.png

二嘱朽、添加distutils.cfg文件

在python安裝目錄C:\Program Files\Python\Lib\distutils中新建distutils.cfg文件,內(nèi)容如下:

[build]
compiler=mingw32

[build_ext]
compiler=mingw32

注:如果目錄已經(jīng)存在該文件怔接,修改成上述內(nèi)容即可搪泳。

三、修改cygwinccompiler.py文件

進(jìn)入python安裝目錄C:\Program Files\Python\Lib\distutils中蜕提,修改cygwinccompiler.py文件森书,添加以下內(nèi)容到get_msvcr()函數(shù)(用于解決ValueError: Unknown MS Compiler version 1900錯(cuò)誤)。

elif msc_ver == '1900':
    # Visual Studio 2015 / Visual C++ 14.0
    # "msvcr140.dll no longer exists"
    return ['vcruntime140']

修改后的內(nèi)容為:

def get_msvcr():
    """Include the appropriate MSVC runtime library if Python was built
    with MSVC 7.0 or later.
    """
    msc_pos = sys.version.find('MSC v.')
    if msc_pos != -1:
        msc_ver = sys.version[msc_pos + 6:msc_pos + 10]
        if msc_ver == '1300':
            # MSVC 7.0
            return ['msvcr70']
        elif msc_ver == '1310':
            # MSVC 7.1
            return ['msvcr71']
        elif msc_ver == '1400':
            # VS2005 / MSVC 8.0
            return ['msvcr80']
        elif msc_ver == '1500':
            # VS2008 / MSVC 9.0
            return ['msvcr90']
        elif msc_ver == '1600':
            # VS2010 / MSVC 10.0
            return ['msvcr100']
        elif msc_ver == '1900':
            # Visual Studio 2015 / Visual C++ 14.0
            # "msvcr140.dll no longer exists" 
            return ['vcruntime140']
        else:
            raise ValueError("Unknown MS Compiler version %s " % msc_ver)

四、轉(zhuǎn)換python36.dllvcruntime140.dll文件

轉(zhuǎn)換python36.dll文件
用于解決C:\Program Files\Python\libs/libpython36.a: error adding symbols: File format not recognized錯(cuò)誤凛膏。

  1. 復(fù)制C:\Program Files\Python\python36.dll到桌面杨名,執(zhí)行以下命令:
gendef python36.dll
dlltool -D python36.dll -d python36.def -l libpython36.a
  1. 備份C:\Program Files\Python\libs/libpython36.a文件,將上步生成的libpython36.a復(fù)制到C:\Program Files\Python\libs目錄下猖毫。

轉(zhuǎn)換vcruntime140.dll文件
用于解決C:\Program Files\Python / vcruntime140.dll: file not recognized: File format not recognized錯(cuò)誤台谍。

  1. 復(fù)制C:\Program Files\Python\vcruntime140.dll到桌面,執(zhí)行以下命令:
gendef vcruntime140.dll
dlltool -D vcruntime140.dll -d vcruntime140.def -l libvcruntime140.a

2.將生成的libvcruntime140.a復(fù)制到C:\ProgramFiles\Python\libs目錄即可吁断。

本次測(cè)試環(huán)境:WIN10(64) + Python 3.6.4(64) + MinGW7.2.0 (x86_64-posix-seh-rev0)趁蕊。

版權(quán)聲明:本文為「txfly」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議仔役,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明掷伙。
原文鏈接:http://www.reibang.com/p/50105307dea5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市又兵,隨后出現(xiàn)的幾起案子任柜,更是在濱河造成了極大的恐慌,老刑警劉巖沛厨,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宙地,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡逆皮,警方通過查閱死者的電腦和手機(jī)宅粥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)电谣,“玉大人秽梅,你說(shuō)我怎么就攤上這事〕狡螅” “怎么了风纠?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)牢贸。 經(jīng)常有香客問我竹观,道長(zhǎng),這世上最難降的妖魔是什么潜索? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任臭增,我火速辦了婚禮,結(jié)果婚禮上竹习,老公的妹妹穿的比我還像新娘誊抛。我一直安慰自己,他們只是感情好整陌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布拗窃。 她就那樣靜靜地躺著瞎领,像睡著了一般。 火紅的嫁衣襯著肌膚如雪随夸。 梳的紋絲不亂的頭發(fā)上九默,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音宾毒,去河邊找鬼驼修。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诈铛,可吹牛的內(nèi)容都是我干的乙各。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼幢竹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼耳峦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起妨退,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤妇萄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咬荷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轻掩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年幸乒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唇牧。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡罕扎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丐重,到底是詐尸還是另有隱情腔召,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布扮惦,位于F島的核電站臀蛛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏崖蜜。R本人自食惡果不足惜浊仆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豫领。 院中可真熱鬧抡柿,春花似錦、人聲如沸等恐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至囱稽,卻和暖如春星著,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粗悯。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工虚循, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人样傍。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓横缔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衫哥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茎刚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容