2010-03-10 95 views
3

我正在研究发布一个包含现有fortran或C程序的python包。该Fortran/C程序是通过运行编译代码的Python包

./configure 
make 

的Python代码调用通过子进程调用生成的二进制(即,代码是不是真的包装成这样的)编译。我想的是,当用户键入

python setup.py install 

该Fortran/C程序中使用./configuremake命令首先编译,然后我想将要安装的Python模块,并安装在二进制python bin/目录以及通常通过distutils.core.setup中的scripts=选项安装的可执行文件。

首先,这样做有什么问题吗?如果不是,通过setup.py做什么是最好的方法?是否有现有的功能来自动化./configuremake,因为这是非常标准的?或者我应该只使用os.system来电?无论哪种方式,这些命令应该在setup.py?那么我是否应该让make将二进制输出到例如scripts/然后在setup()函数中有scripts=['scripts/mybinary']

回答

2

不要让这个过于复杂。

只需提供它们作为单独的项目与自述文件,说 - 基本上 - 你在问题中说什么。

  1. 使用./configure; make; make install构建Fortran/C.

  2. 安装Python与python setup.py install

它似乎不是火箭科学。试图过度简化安装意味着你必须考虑到每一个操作系统变幻无常和奇怪。

更容易信任用户执行“标准”安装,以便Fortran/C位于系统PATH上,并且您的Python脚本应配置为在系统PATH上找到它们。

想要使用您的软件的人随后可以自由地重新配置以满足他们自己的独特需求。无论如何他们会。不要过度包装,迫使他们与你作斗争重新配置。

0

考虑编写一个python C extension作为C代码的包装,并将f2py扩展作为Fortran代码的包装。然后你可以在Python代码中使用它们作为快速调用,而不是使用子进程。