我正在考虑发布一个包含现有fortran或C程序的python包。 fortran / C程序通过运行
编译./configure
make
python代码通过子进程调用调用生成的二进制文件(即代码实际上不是这样包装的)。我想要的是当用户输入
时python setup.py install
首先使用./configure
和make
命令编译fortran / C程序,然后我希望安装python模块,并在python bin/
中安装二进制文件目录以及通常通过scripts=
中的distutils.core.setup
选项安装的可执行文件。
首先,这样做有什么问题吗?如果没有,通过setup.py
进行此操作的最佳方式是什么?是否存在自动执行./configure
和make
的功能,因为这是非常标准的?或者我应该只使用os.system
来电?无论哪种方式,这些命令应该放在setup.py
的哪个位置?那么我应该make
将二进制文件输出到例如scripts/
然后在scripts=['scripts/mybinary']
函数中有setup()
?
答案 0 :(得分:2)
不要太复杂。
只需将它们作为单独的项目提供,其自述文件基本上就是您在问题中所说的内容。
使用./configure; make; make install
。
使用python setup.py install
设置Python。
它似乎不是火箭科学。试图过度简化安装意味着您必须考虑每个操作系统的变幻莫测和奇怪。
更容易信任用户进行“标准”安装,以便Fortran / C在系统PATH上,并且您的Python脚本应配置为在系统PATH上找到它们。
想要使用您的软件的人可以根据自己的独特需求自由重新配置。无论如何他们会。不要过度包装并强迫他们与你作斗争来重新配置。
答案 1 :(得分:0)
考虑将python C extension编写为C代码的包装器,并将f2py扩展名作为fortran代码的包装器。然后你可以在你的python代码中使用它们作为快速调用而不是使用子进程。