f2py:Python不导入模块
我想使用f2py:Python不导入模块,python,fortran,f2py,Python,Fortran,F2py,我想使用f2py将Fortran模块导入python 我使用命令f2py-c primes.f90-m primes成功编译了模块 此命令生成primes.cp39-win_amd64.pyd和一个目录: primes --.lib ----libprimes.E32HNUCUWH2OOA5WTEOFP7BSXKY3WIRC.gfortran-win_amd64.dll 当我尝试导入模块时,如import primes所述,它会导入一些内容,但不会导入模块。因此,例如,我无法看到文档字符串或访
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”,而不是模块本身
我怎样才能解决这个问题
谢谢
编辑:
我使用了中的示例来演示问题:
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``. [...]"
我的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'>
可翻译为:
ImportError: DLL load failed while importing primes: The given Module was not found.
因此,实际的错误是在给定的组合中没有出现错误。来自github的@zlamere问题的解决方案对我有效 我没有使用
f2py-c primes.f90-m primes
python-m numpy.f2py-c--fcompiler=gnu95--compiler=mingw32 primes.f90-m primes
我不知道为什么这个命令有效,而另一个命令无效。它到底导入了什么?到底发生了什么?你有什么东西?它应该是
fortran
类型。它是否具有类型fotran
?如果是,一切都是正确的。您是否尝试过您提到的链接中“入门”下提到的示例?@jack是的,我尝试过。这对我也不起作用。@VladimirF我希望我的编辑能有所帮助。可能是“f2py”和“python”的版本不匹配?(如果是这样,使用特定版本,如“python3.8-m numpy.f2py-c primes.f90-m primes”…和“$python3.8”可能会有所帮助。)