最近看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...