f2py: Python不导入模块



我想用f2py将Fortran模块导入python。

我用f2py -c primes.f90 -m primes命令成功编译了这个模块。

生成primes.cp39-win_amd64.pyd和目录:

primes
--.lib
----libprimes.E32HNUCUWH2OOA5WTEOFP7BSXKY3WIRC.gfortran-win_amd64.dll

当我试图用import primes导入这里所描述的模块时,它会导入一些东西,但不是模块。例如,我不能看到文档字符串或访问函数。

我怀疑Python试图导入'primes'文件夹,而不是模块本身。

我该如何解决这个问题?

谢谢。编辑:

我用下面的例子来演示这个问题:

显示问题的Python代码:

import primes
print(primes) 
print(primes.__doc__) # should return "This module 'primes' is auto-generated with f2py (version:2). Functions: [...]"
print(type(primes)) # as @VladimirF mentioned should return fortran
print(primes.logical_to_integer.__doc__) # should return "prime_numbers = logical_to_integer(is_prime,num_primes,[n]) Wrapper for ``logical_to_integer``. [...]"

实际回报率:

Traceback (most recent call last):
File "xxx", line 6, in <module>
print(primes.logical_to_integer.__doc__)
AttributeError: module 'primes' has no attribute 'logical_to_integer'
<module 'primes' (namespace)>
None
<class 'module'>

编辑1

我已经按照@roygvib的建议做了。我尝试了几个版本的python和conda,部分问题似乎是我使用系统解释器来编译模块和conda来运行python代码。

对于所有其他组合将引发以下异常:

ImportError: DLL load failed while importing primes: Das angegebene Modul wurde nicht gefunden.

可译为:

ImportError: DLL load failed while importing primes: The given Module was not found.

所以实际的错误是在给定的组合中没有产生错误。

@zlamere从这个github问题的解决方案为我工作。

我用python -m numpy.f2py -c --fcompiler=gnu95 --compiler=mingw32 primes.f90 -m primes代替f2py -c primes.f90 -m primes

我不知道为什么这个命令有效而另一个不行。

相关内容

  • 没有找到相关文章

最新更新