我试图安装一个名为mtspec
的python包,它是一些fortran90代码的包装器。(链接:https://pypi.python.org/pypi/mtspec)。但是,这个包相当旧(上次更新是在2010年),我在macosx10.10.5上使用setup.py
脚本正确编译代码时遇到了困难。由于distutils
中有一些明显的变化,我不得不自己修改一下setup.py
脚本。最初,setup.py
中的第48行如下所示:
from distutils.unixccompiler import UnixCCompiler, _darwin_compiler_fixup
我换成了
^{pr2}$没有这个,setup.py
只是抛出了异常cannot import name _darwin_compiler_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
也没有帮助。我现在不知道该怎么办。我以前在craylinux和redhatlinux上安装了这个软件包,只不过简单地注释掉了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和自制软件?在
我在编译另一个库时遇到了同样的错误,下面的链接为我解决了这个问题:https://github.com/Homebrew/legacy-homebrew/issues/45258
删除macports(例如sudo mv/opt/local~/macport)后,一切正常。在
相关问题 更多 >
编程相关推荐