Python 安装astropy时遇到的问题

Python 安装astropy时遇到的问题,python,astropy,Python,Astropy,我在为python安装astropy时遇到问题。 当我在终端中输入'pip install astropy'时,我收到以下消息: Collecting astropy Using cached astropy-1.0.4.tar.gz Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 20, in <m

我在为python安装astropy时遇到问题。 当我在终端中输入'pip install astropy'时,我收到以下消息:

Collecting astropy
Using cached astropy-1.0.4.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
  File "<string>", line 20, in <module>
  File "/private/var/folders/8g/ggchkyrx1xv7jk9df887m1cr0000gq/T/pip-build-63p1fldn/astropy/setup.py", line 49, in <module>
    adjust_compiler(NAME)
  File "/private/var/folders/8g/ggchkyrx1xv7jk9df887m1cr0000gq/T/pip-build-63p1fldn/astropy/.eggs/astropy_helpers-1.0.3-py3.4.egg/astropy_helpers/setup_helpers.py", line 197, in adjust_compiler
    if re.match(broken, version):
  File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/re.py", line 160, in match
    return _compile(pattern, flags).match(string)
TypeError: can't use a bytes pattern on a string-like object

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in 
/private/var/folders/8g/ggchkyrx1xv7jk9df887m1cr0000gq/T/pip-build-63p1fldn/astropy
收集星象
使用缓存的astropy-1.0.4.tar.gz
从命令python setup.py egg_info完成输出:
回溯(最近一次呼叫最后一次):
文件“”,第20行,在
文件“/private/var/folders/8g/ggchkyrx1xv7jk9df887m1cr0000gq/T/pip-build-63p1fldn/astropy/setup.py”,第49行,在
调整编译器(名称)
文件“/private/var/folders/8g/ggchkyrx1xv7jk9df887m1cr0000gq/T/pip-build-63p1fldn/astropy/.eggs/astropy\u helpers-1.0.3-py3.4.egg/astropy\u helpers/setup\u helpers.py”,第197行,在adjust\u编译器中
如果重新匹配(断开,版本):
文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/re.py”,第160行,匹配
返回编译(模式、标志)。匹配(字符串)
TypeError:无法在类似字符串的对象上使用字节模式
----------------------------------------
命令“python setup.py egg_info”失败,错误代码为1
/private/var/folders/8g/ggchkyrx1xv7jk9df887m1cr0000gq/T/pip-build-63p1fldn/astropy

有人知道为什么会发生这种情况吗?

您使用的是OS X吗?astropy的
setup.py
似乎试图避免在您的系统上使用llvm gcc编译器。astropy的一个助手方法中可能有一个bug,但是您可以通过显式地将clang设置为默认编译器来避免它沿着此代码路径运行:

$ export CC=clang
$ export CXX=clang++
$ export FFLAGS=-ff2c
然后重新运行
pip安装astropy

编辑:由于上述操作不适用于您,请尝试手动安装

安装Xcode命令行工具,以确保系统上安装了
clang

将环境变量
CC
配置
clang
设置为默认编译器

export CC=clang
下载astropy tarball

curl -O https://pypi.python.org/packages/source/a/astropy/astropy-1.0.4.tar.gz
tar zxvf astropy-1.0.4.tar.gz
解开星状的柏油球

curl -O https://pypi.python.org/packages/source/a/astropy/astropy-1.0.4.tar.gz
tar zxvf astropy-1.0.4.tar.gz
将目录更改为
astropy-1.0.4
文件夹

cd astropy-1.0.4
尝试手动修补导致安装失败的错误。首先在文本编辑器中打开
setup\u helpers.py

vim astropy_helpers/astropy_helpers/setup_helpers.py
修改第110行。 移除“b”按钮

i、 e.改变:

(b'i686-apple-darwin[0-9]*-llvm-gcc-4.2', 'clang')
致:

astropy-1.0.4/
文件夹执行手动安装:

sudo python setup.py install

这似乎是正确的想法。这确实是一个bug,似乎只有在使用未知或损坏的编译器时才会发生。在这种情况下,函数返回字符串
'unknown'
,此时它应该返回一个bytes对象(反之亦然)。Joe的解决方案应该在这里起作用,除非您也没有
clang
。我在这里提出了一个问题:顺便说一句,如果你根本没有C编译器,你可以通过设置
export CC=/bin/echo
或类似的设置来解决这个问题,尽管在这种情况下包仍然无法安装——它需要一个C编译器来构建(还可以考虑使用带有Astropy预构建二进制文件的scientific python发行版)那么,我现在能做些什么呢?我需要它来工作。顺便说一句,我以前遇到过一个不同的错误,我看到这里有人建议这样做:“sudo ln-s/usr/bin/gcc/usr/bin/gcc-4.2”。之后我遇到了这个错误。请尝试安装Xcode命令行工具,然后再次运行pip安装:如果它不起作用安装Xcode命令行工具后,立即尝试设置CC环境变量,如我的回答所示。尝试了,没有区别。