PIP安装Numpy引发错误“ ascii编解码器无法解码字节0xe2”


67

我在新构建的计算机上全新安装了Ubuntu。我刚刚使用apt-get安装了python-pip。现在,当我尝试点安装Numpy和Pandas时,出现以下错误。

我已经在SO和Google的很多地方看到过提到此错误,但是我找不到解决方案。有人提到这是一个错误,有些线程已经死了……这是怎么回事?

Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 185, in main
    return command.main(cmd_args)
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 161, in main
    text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 72: ordinal not in range(128)

3
您的主机名,主目录和&c中是否存在非ASCII字符?设置LC_ALL=C有什么区别吗?
Charles Duffy 2014年

1
虽然此文章针对的是Amazon EC2,但似乎是同样的问题,我认为答案更有用:stackoverflow.com/questions/19595944/…–
BenjaminGolder

即使我变得numpy,安装仍然有问题。还有其他人有这个问题吗?
eleijonmarck

作为OP,三年后,我可以说我已经通过迁移到Haskell解决了这个问题;)
Josh.F

Answers:


45

我最近有这个确切的问题,并使用

apt-get install python-numpy

这会将numpy添加到系统python解释器中。我可能不得不对matplotlib做同样的事情。要在virtualenv中使用,您必须使用

--system-site-packages

选项

http://www.scipy.org/install.html


2
谢谢!另外,我发现,如果计算机上没有python-dev,您也需
要这样做

是的 我现在记得了。
Jeff M.

3
您无需重新创建自己的产品virtualenv,可以使用修改现有的产品virtualenv VIRTUALENV_DIR --system-site-packages
fiatjaf 2014年

3
在Ubuntu服务器14.02上有相同的问题。sudo apt-get install python2.7-dev解决了这个问题。
baltasvejas

1
这解决了问题,但是我认为您至少应该提到您正在使(所有)系统软件包可用,因此使用virtualenv的观点被部分击败了……
Mark

36

对我来说@Charles Duffy评论解决了它。把它放在你的环境中:

LC_ALL=C

您可以使用以下行将其添加到.bashrc中:

export LC_ALL=C

但是请注意,这会影响所有其他程序。因此,您可能只想将其用于点子运行:

$ LC_ALL=C pip install ...


1
这似乎是正确的答案。使用--system-site-packages不是我的选择。
moi 2015年

4
一个更好的措词是:在您的〜/ .bashrc中添加“ export LC_ALL = C”
Gil Hiram

@GilHiram取决于您的shell类型,您可能必须在其他位置设置此env变量。unix.stackexchange.com/questions/50665/…–
msemelman

1
在virtualenv内外,安装都对我不起作用,因此使用--system-site-packages不是正确的答案。我知道它可以与一起在virtualenv中工作LC_ALL=C pip install ...
Arjun

1
@javadba强制应用程序使用默认语言进行输出,并强制按字节排序。
radtek

12

尝试更新点:

pip install -U pip

这对我在venv上的debian jessie有用。
kalebo

7

我在使用matplotlib软件包时遇到了问题。我必须执行:

export LC_ALL=C
pip install --upgrade setuptools


3

组合

sudo apt-get install python-dev

export LC_ALL=C
pip install --upgrade setuptools

解决了我的问题。


3

运行时出现类似的错误pip install pandas,这是由于内存不足。我将虚拟机中的内存增加到4G,并修复了问题。


1
同样在这里。安装时将VM实例临时从1升级到2 gig RAM。
2015年

3

最近,我偶然发现了一个相同的问题,这为我解决了这个问题:

              echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
              echo 'export LANGUAGE=en_US:en' >> ~/.bashrc
              echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
              sudo apt-get install language-pack-en

注意,

我已经安装了python-numpy和python-dev。即使这样也可能会导致系统出现问题。您还可以导出LC_ALL = C而不是en_US.UTF-8(或任何其他语言)


1

在“ site-packages”目录中,使“ sitecustomize.py”像这样

import sys
sys.setdefaultencoding("utf-8")

现在您可以获取文件“ pip.log”


这只是一个间接的答案,但它可以教给我们一些东西,不应该被低估。
user1158559'3

1

尝试一下sudo apt-get install python-numpy。它为我解决了问题,可以通过替换numpy将其用于scipy,pandas等。(是)


1

@OSX用户:将以下行添加到您的~/.profile~/.bashrc

LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"

使用source ~/.profile或执行脚本 source ~/.bashrc


1

在docker容器中运行时,这对我来说是固定的(在django-postgrespool项目上,但这也可以在这里工作)。

# Set the locale
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    locale-gen
ENV LANG en_US.UTF-8  
ENV LANGUAGE en_US:en  
ENV LC_ALL en_US.UTF-8   

参见https://stackoverflow.com/a/28406007/1876203


locale-gen en_US.UTF-8也为我工作!或RUN locale-gen en_US.UTF-8在Dockerfile中
-Barmaley,

0

如果要使用numpy的pip版本,则可以构建软件包的依赖项,然后使用pip进行安装

sudo apt-get build-dep python-numpy
pip install numpy

这应该在系统级别上安装软件包所需的一切。


0

在使用Ubuntu的Jetson TK1上也有类似的问题。

可以正常使用 apt-get install python-pandas


0

这么多的答案对我没有用,即使有些答案显然对其他人也有用。但随后我发现了问题所在,因此将其添加到集合中:

dpkg-reconfigure locales
# enable the "en-US.UTF-8" locale
# when asked for a default, no need to define one

事实是,我正在一个Debian Stretch linux容器中工作,该容器恰好未安装任何UTF-8语言环境,可能是因为我下载了最小的库存映像。现已安装此UTF-8语言环境,请正确安装numpy和其他软件包。


0

就我而言,我是从源代码安装Python的(在我不是的远程计算机上sudo)。出于某种原因,它使用的pip是某些真正的旧版本。所以之后:

python -m pip install --upgrade pip

我能够轻松安装numpy所有想要的东西。


0

我遇到了类似的问题。我试过了:

export LC_ALL=C
pip install --upgrade setuptools

但这并不能解决问题,但是出现了另一个错误:

AttributeError:'str'对象没有属性'rollback'

然后我尝试了:

pip install -U pip

然后问题解决了。


0

将机器中的区域设置重置为预期的设置可以解决我的问题。对我来说,当我将语言设置切换为英语(印度)时,问题就开始了。我不得不将其切换回英语(英国)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.