Python的C擴充套件問題

2021-07-06 07:54:05 字數 1816 閱讀 1153

最近看python核心程式設計第二版,關於python的c擴充套件。書隨帶的源**(應該是不會有什麼**錯誤的,朋友在linux下跑完全無障礙,還是linux**好啊)有以下兩個檔案,第乙個是python包裝過的c語言檔案,第二個是編譯的setup.py檔案。

系統環境是win7ultimate。

python的話python2.7和python3.5共存。

我用python2.7 install setup.py檔案,報錯顯示unable to find vcvarsall.bat檔案。用python3則報了一串複雜的錯誤(我直觀感覺是setup.py檔案語法是針對python2的),但沒有報錯說找不到vcvarsall.bat,這應該能說明python3是能找到c語言編譯器的(當然也有可能語法錯誤導致直譯器提前中止)。使用python3的報錯如下圖:

之前電腦裝過vc6.0,vs2013,之後都解除安裝了,不過編譯環境之類的仍然存在電腦裡(vc++那些庫當然都有,不然怎麼玩遊戲)。我搜尋了關於那個bat檔案找不到的解決辦法,主要有以下幾種:

①用mingw作為替代用的編譯器,則報錯如下:

用python3嘗試,如下:

②將bat檔案所在路徑加入path環境變數中。然而我的path中本來就有。不可行。

③安裝visualstudio.我重新安裝了vs2015,問題依舊。

關於安裝vs解決這個問題,網上有帖子說最好安裝vs2008,也有說如果安裝vs2010或更高版本的話則免去配置麻煩。我直接上的最新的vs2015。按理說python2最新的python2.7.10應該不會存在老舊的問題吧。

這是c語言**,檔名extest2.c

#include #include #include int fac(int n)

char *reverse(char *s)

return(s);

}int test()

#include "python.h"

static pyobject *

extest_fac(pyobject *self, pyobject *args)

static pyobject *

extest_doppel(pyobject *self, pyobject *args)

static pyobject *

extest_test(pyobject *self, pyobject *args)

static pymethoddef

extestmethods =

, ,,,

};void initextest()

這是python**,檔名setup.py。

#!/usr/bin/env python

from distutils.core import setup, extension

mod = 'extest'

setup(name=mod, ext_modules=[

extension(mod, sources=['extest2.c'])])

自己暫時還沒有在其他系統上跑過這些**,之後應該會去ubuntu和win10上跑一遍。以上問題今天非常困擾我,暫時mark一下。

Python的C 擴充套件

python 以其強大的功能 簡潔的語法 出色的效率成為當前領先的 oo動態語言。在 python 中,所有內容都是物件,包括方法。python 的強大的原因之一是其可以用 c c 進行方便地擴充套件,它的許多高階功能也是通過這種方式獲得的。使用 c 進行擴充套件,目前比較流行的有兩種方式 一種為 ...

c 擴充套件python

include int fact int n pyobject warp fact pyobject self,pyobject args result fact n return py buildvalue i result static pymethoddef examplemethods ex...

C語言擴充套件Python

python具有很好的開發靈活性,最大的特點是c語言可以對python進行擴充套件,目前工作中正在進行相關的開發,第一篇文章作為基礎.實現c函式,用python api封裝,實現倆個功能,1.say hello,列印hello world 2.calc pv,做加法用算.以下為使用方法 01pyth...