Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
f2py:Python不导入模块_Python_Fortran_F2py - Fatal编程技术网

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”可能会有所帮助。)