Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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
Python “原因”;后缀或操作数对于'movq'&引用;?_Python_Macos_Fortran_Gfortran_Setup.py - Fatal编程技术网

Python “原因”;后缀或操作数对于'movq'&引用;?

Python “原因”;后缀或操作数对于'movq'&引用;?,python,macos,fortran,gfortran,setup.py,Python,Macos,Fortran,Gfortran,Setup.py,我正在尝试安装一个名为mtspec的python包,它是一些Fortran 90代码的包装器。(链接:)。但是,这个软件包相当旧(最近一次更新是在2010年),我在获取setup.py脚本以正确编译Mac OSX 10.10.5上的代码时遇到了问题。由于distutils中的一些明显变化,我不得不自己对setup.py脚本进行一些修改。最初,setup.py中的第48行如下所示: from distutils.unixccompiler import UnixCCompiler, _darwin

我正在尝试安装一个名为
mtspec
的python包,它是一些Fortran 90代码的包装器。(链接:)。但是,这个软件包相当旧(最近一次更新是在2010年),我在获取
setup.py
脚本以正确编译Mac OSX 10.10.5上的代码时遇到了问题。由于
distutils
中的一些明显变化,我不得不自己对
setup.py
脚本进行一些修改。最初,
setup.py
中的第48行如下所示:

from distutils.unixccompiler import UnixCCompiler, _darwin_compiler_fixup
我换成了

from distutils.unixccompiler import UnixCCompiler#, _darwin_compiler_fixup
from _osx_support import compiler_fixup as _darwin_compiler_fixup
如果没有这个选项,
setup.py
只会抛出异常
无法导入name\u darwin\u compiler\u fixup
。我不太了解
distutils
,所以请告诉我这是否是错误的。但在更改之后,它至少尝试编译代码。但是,
gfortran
现在抛出以下错误:

/var/folders/vt/9jwlypbs5rz8hy6d_h02pg8xg967kg/T//ccm4Gy5y.s:25:suffix or  operands invalid for `movq'
/var/folders/vt/9jwlypbs5rz8hy6d_h02pg8xg967kg/T//ccm4Gy5y.s:27:suffix or operands invalid for `movq'
/var/folders/vt/9jwlypbs5rz8hy6d_h02pg8xg967kg/T//ccm4Gy5y.s:28:suffix or operands invalid for `movq'
/var/folders/vt/9jwlypbs5rz8hy6d_h02pg8xg967kg/T//ccm4Gy5y.s:34:suffix or operands invalid for `movq'
/var/folders/vt/9jwlypbs5rz8hy6d_h02pg8xg967kg/T//ccm4Gy5y.s:79:suffix or operands invalid for `movq'
/var/folders/vt/9jwlypbs5rz8hy6d_h02pg8xg967kg/T//ccm4Gy5y.s:115:suffix or operands invalid for `movq'
我对Fortran不是很有经验,所以我不知道这意味着什么,在StackOverflow和Google上搜索也没有找到任何解决这个问题的方法。我在另一个网站上看到的一条建议(不记得我在哪里看到过)建议删除
-O
编译器标志,但这使问题变得更糟;错误被抛出的频率更高。在
conda
虚拟环境中运行
setup.py
也没有帮助。我现在不知道该怎么办。我以前在Cray Linux和Red Hat Linux上安装过这个软件包,只需在
setup.py
中注释掉对Darwin的所有引用;只有Mac给我带来了麻烦

如果有帮助,下面是
setup.py
中配置编译器的代码块:

from distutils.unixccompiler import UnixCCompiler#, _darwin_compiler_fixup
from _osx_support import compiler_fixup as _darwin_compiler_fixup
# Monkey patch UnixCCompiler for Unix, Linux and darwin
UnixCCompiler.src_extensions.append(".f90")
def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts):
        compiler_so = self.compiler_so
        if sys.platform == 'darwin':
            compiler_so = _darwin_compiler_fixup(compiler_so, cc_args + extra_postargs)
        if ext == ".f90":
            if sys.platform == 'darwin' or sys.platform == 'linux2':
                compiler_so = ["gfortran"]
                cc_args = ["-O", "-fPIC", "-c", "-ffree-form"]
        try:
            self.spawn(compiler_so + cc_args + [src, '-o', obj] + extra_postargs)
        except DistutilsExecError, msg:
            raise CompileError, msg
UnixCCompiler._compile = _compile
# set library dir for mac and linux
libs=['gfortran']

因为你提到这只会给Mac带来麻烦。您的机器上是否安装了macports和自制软件

我在编译另一个库时遇到了相同的错误,以下链接为我解决了此问题:


删除macports(例如sudo mv/opt/local~/macport)后,一切正常。

因为您提到它只会在Mac上造成问题。您的机器上是否安装了macports和自制软件

我在编译另一个库时遇到了相同的错误,以下链接为我解决了此问题:


删除macport(例如sudo mv/opt/local~/macport)后,一切正常。

这些错误不是Fortran错误,而是汇编错误。注意后缀
.s
而不是
.f90
。这些错误不是Fortran错误,而是汇编错误。注意后缀
.s
而不是
.f90