【问题标题】:Failed to install pip for pypy on Ubuntu无法在 Ubuntu 上为 pypy 安装 pip
【发布时间】:2016-04-06 14:54:15
【问题描述】:

我无法在 Ubuntu 15.10 上为 pypy 4.0.1 安装 pip。

我从http://pypy.org/download.html 下载了 pypy 4.0.1。为它创建了一个符号链接。并使用 wget 从https://bootstrap.pypa.io/get-pip.py 下载get-pip.py。

但是当我运行sudo pypy get-pip.py 时,我得到了异常:

Collecting pip
Exception:
Traceback (most recent call last):
    File "/tmp/tmps2kjCI/pip.zip/pip/basecommand.py", line 211, in main
      status = self.run(options, args)
    File "/tmp/tmps2kjCI/pip.zip/pip/commands/install.py", line 294, in run
      requirement_set.prepare_files(finder)
    File "/tmp/tmps2kjCI/pip.zip/pip/req/req_set.py", line 334, in prepare_files
      functools.partial(self._prepare_file, finder))
    File "/tmp/tmps2kjCI/pip.zip/pip/req/req_set.py", line 321, in _walk_req_to_install
      more_reqs = handler(req_to_install)
    File "/opt/pypy-4.0.1-linux64/lib_pypy/_functools.py", line 42, in __call__
      return self._func(*(self._args + fargs), **fkeywords)
    File "/tmp/tmps2kjCI/pip.zip/pip/req/req_set.py", line 491, in _prepare_file
      session=self.session)
    File "/tmp/tmps2kjCI/pip.zip/pip/download.py", line 825, in unpack_url
      session,
    File "/tmp/tmps2kjCI/pip.zip/pip/download.py", line 673, in unpack_http_url
      from_path, content_type = _download_http_url(link, session, temp_dir)
    File "/tmp/tmps2kjCI/pip.zip/pip/download.py", line 885, in _download_http_url
      with open(file_path, 'wb') as content_file:
    TypeError: expected string, got NoneType object

我可以毫无问题地运行sudo python get-pip.py,但使用 pypy 失败了。我也尝试了 Ubuntu 12.04 和 14.04,但没有运气。

我安装了 Python 2.7.10,并且正在使用 Linode 机器。但是换成 DigitalOcean 并没有帮助。

【问题讨论】:

  • Python 2.7 自带 pip 安装
  • 是的,但 PyPy 没有。我试图为 PyPy 安装 pip。
  • 嗯。 According to the documentation 除了 Ubuntu 15.10 未在 pypy 站点上列出为针对 构建之外,我认为您所做的没有任何问题
  • 事情是即使使用绝对路径它仍然失败。
  • 您也可以尝试pypy -m ensurepip,它的工作原理与最近的 CPython 2.7.x 变体中的一样

标签: python ubuntu pip pypy linode


【解决方案1】:

如何从 Ubuntu 档案库 sudo apt install pypy 安装 PyPy。或者,如果您想要最新版本,请从PyPy PPA

那么如果你创建一个 virtualenv,它里面就会有 pip:

$ sudo apt-get install virtualenv
$ virtualenv -p pypy ve
$ source ./ve/bin/activate
$ pip install ...

【讨论】:

  • 您不需要特定的 PyPy 就可以通过这种方式使用 virtualenv;这些命令应该适用于任何 PyPy。
  • 不,那是故意apt。这个问题是在 Ubuntu 15.04 上提出的,它有新的漂亮的apt 命令。
  • 好吧,在 ubuntu 16.04 上,这会在创建 denderlenv 时崩溃。
【解决方案2】:

我有同样的问题,解决方法很简单,你必须运行这个命令:

export LC_ALL=C.UTF-8

然后运行 ​​pip 安装。

您应该将此行添加到服务器中的 .bashrc 或 .bash_profile 中,即使您可以将其添加到 /etc/environment 以全局方式使用它。 (如果有人有更好的解决方案,请告诉我)

编辑(2016-10):

以上是任何其他发行版的全局和惰性解决方案。 如果你在 ubuntu 中,你需要重新配置语言环境,你可以这样做:

sudo locale-gen "en_US.UTF-8"
sudo dpkg-reconfigure locales

【讨论】:

  • 你能解释一下这个解决方案的作用吗?
  • 嗯,我不记得为什么了(大约 7 个月前),但是当您全新安装 ubuntu 服务器时,您必须配置语言环境,许多应用程序使用此参数来确定编码和其他东西。答案已编辑以添加 ubuntu 命令。
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2016-02-16
  • 2017-11-01
  • 2015-07-13
  • 2022-07-20
  • 1970-01-01
相关资源
最近更新 更多