Wil*_*tin 52 python fortran numpy setuptools f2py
我正在尝试为我的领域中的一些流行的Fortran代码进行python包分发.我希望它对setup.py文件使用最标准的方法.相关的qustion有助于学习如何包装Fortran扩展.
当使用这种方法,我混合时发现一些容易混淆的行为setuptools和numpy.distutils.将两者混合是不好的做法吗?截至2015年,似乎最好setuptools尽可能多地使用.
但是,我想以Fortran一种兼容的方式构建扩展numpy. 所以我想从中导入numpy.distutils以获取Extension和setup.
我使用以下基本方法:
from setuptools.command.develop import develop
from numpy.distutils.core import Extension, setup
ext_modules=[Extension("my_package.fortran_mod", sources=['src/fortran_mod.f'])]
class MyDevelop(develop):
def run(self):
my_script()
develop.run(self)
setup(
...
ext_modules=ext_modules,
cmdclass={'develop':MyDevelop})
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但我有疑问.
setuptools和一般是好的做法numpy.distribute吗?setuptools先进口吗?numpy?也许甚至有一些讨论Fortran扩展?https://www.youtube.com/watch?v=R4yB-8tB0J0
http://www.fortran90.org/src/best-practices.html#interfacing-with-python
这似乎有效,但我有疑问。
- 混合使用 setuptools 和 numpy.distribute 通常是一个好的做法吗?
- 我导入它们的顺序重要吗?我应该首先导入 setuptools 吗?
- 是否有关于将扩展打包到 numpy 的官方最新教程?也许甚至可以讨论一些 Fortran 扩展?
您应该不再需要使用 numpy.distribute 了。
^^ 没有必要
特别是对于用 numpy 包装 Fortran 代码,有流行的f2py。然而,我个人认为必要的代码注释是多余的,因为好的 Fortran 代码包含所有必要的信息。
(下面警告个人项目插件)
最近发布的是更干净的fmodpy,它以易于理解且干净的界面自动生成所有必要的包装器代码。它支持 Fortran90 之前的版本,但最适合 Fortran90 及更高版本。它可以用来生成一个干净的发行版以及代码的 python 接口(假设用户安装了 gfortran)。
| 归档时间: |
|
| 查看次数: |
1784 次 |
| 最近记录: |