带有编译代码的Python包

带有编译代码的Python包,python,package,Python,Package,我正在考虑发布一个包含现有fortran或C程序的python包。fortran/C程序是通过运行 ./configure make python代码通过子进程调用调用生成的二进制文件(即,代码实际上并没有这样包装)。我想要的是当用户输入 python setup.py install fortran/C程序首先使用/configure和make命令编译,然后我希望安装python模块,以及要安装在pythonbin/目录中的二进制文件,以及通常通过distutils.core.setup中

我正在考虑发布一个包含现有fortran或C程序的python包。fortran/C程序是通过运行

./configure
make
python代码通过子进程调用调用生成的二进制文件(即,代码实际上并没有这样包装)。我想要的是当用户输入

python setup.py install
fortran/C程序首先使用
/configure
make
命令编译,然后我希望安装python模块,以及要安装在python
bin/
目录中的二进制文件,以及通常通过
distutils.core.setup
中的
scripts=
选项安装的可执行文件


首先,这样做有什么问题吗?如果没有,那么通过
setup.py
执行此操作的最佳方法是什么?由于这是相当标准的,是否有现有的功能来自动执行
/configure
make
?或者我应该只使用
os.system
调用吗?不管怎样,这些命令应该放在
setup.py
中的什么位置?然后我应该让
make
将二进制文件输出到例如
scripts/
中,然后让
scripts=['scripts/mybinary']
setup()
函数中使用
scripts=['scripts/mybinary']

只需将它们作为单独的条目提供一份自述,上面写着——基本上——你在问题中所说的

  • 使用
    /configure构建Fortran/C;制作进行安装

  • 使用
    Python Setup.py安装安装Python

  • 这似乎不是火箭科学。试图过度简化安装意味着您必须考虑操作系统的每一个古怪之处

    更容易信任用户进行“标准”安装,因此Fortran/C位于系统路径上,并且您的Python脚本应该配置为在系统路径上找到它们

    希望使用您的软件的人可以根据自己的独特需求自由地重新配置。反正他们会的。不要过度包装,并迫使他们反对您重新配置东西。

    考虑编写一个作为C代码的包装,以及一个扩展作为fortran代码的包装。然后,您可以在python代码中将它们作为快速调用使用,而不是使用子流程