使用Cython生成cpps,然后在一个setup.py中安装C扩展

时间:2016-04-25 08:39:53

标签: python cython distutils setup.py

我需要在我的pymongo 2.8中安装C / C ++扩展程序之前从SELECT tbl_stock.matnum, tbl_stock.sorg, tbl_stock.qty, tbl_mas_material.matname, tbl_mas_material.matgrp FROM tbl_stock INNER JOIN tbl_mas_material ON tbl_stock.matnum = tbl_mas_material.matnum WHERE CAST(tbl_stock.qty AS UNSIGNED) > 0 .cpp生成一些.pyx(通过本地点install-- .pxd)。我曾经单独生成setup.py,但这对于开发来说真的很烦人,这意味着我经常不得不提交生成的pip install path/to/my_pkg s,这会使我的回购膨胀,而且我会#39 ;而不是做。

我过去只使用.cpp文件生成我的.cpp,如下所示:

cpp

然后一旦生成它们,我就运行setup.py将所有内容安装为C / C ++扩展,如下所示:

gen_cpp.sh

我真正想做的就是让我的cython src/*.pyx src/*.pxd -a --cplus --include-dir ../ 文件通过setup.py运行,以便在完成其余的安装之前生成必需的cpps,但我遇到了一堵砖墙。我可以通过在setup( name="MyPKG", version="0.1.9", description="some description", author='me', author_email='me@me.com', url='http://www.myurl.com'', ext_modules = [ Extension( "something", sources = glob.glob('src/*.cpp') + glob.glob('lib/b64/*.c'), include_dirs=['lib'], language = "c++", ) ] ) 中继承gen_cpp.sh来运行gen_cpp.sh

install

但是这会运行setuptools.command.install在build目录中查找文件,这显然不起作用。在做任何事情之前,我已尝试class UpdateAndInstall(install): def run(self): os.system("sh ./gen_cpp.sh") install.run(self) 在该脚本中的当前工作目录,但我没有做任何事情让我到了正确的地方,这整个方法感觉更黑,更黑。怎么做

0 个答案:

没有答案