Не удалось установить pip для pypy в Ubuntu

Я не могу установить pip для pypy 4.0.1 на Ubuntu 15.10.

Я скачал pypy 4.0.1 с сайта http://pypy.org/download.html. Создал для него симлинк. И использовал wget для загрузки get-pip.py с https://bootstrap.pypa.io/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 не помогла.


person jerry.z    schedule 02.01.2016    source источник
comment
Python 2.7 поставляется с установленным pip   -  person OneCricketeer    schedule 02.01.2016
comment
Да, но PyPy нет. Я пытался установить pip для PyPy.   -  person jerry.z    schedule 02.01.2016
comment
Хм. Согласно документации я не вижу ничего плохого в том, что вы сделано не для Ubuntu 15.10, не указано на сайте pypy как созданное против   -  person OneCricketeer    schedule 02.01.2016
comment
Дело в том, что даже с абсолютным путем это все равно не удалось.   -  person jerry.z    schedule 02.01.2016
comment
ХОРОШО. Похоже, понижение версии PyPy до версии 2.7.0 на данный момент решает эту проблему. Но было бы очень полезно, если бы кто-нибудь указал, почему последняя версия PyPy не работает.   -  person jerry.z    schedule 02.01.2016
comment
У меня работает (тот же Ubuntu 15.10 и тот же PyPy 4.0.1 на 64-битном Linux)...   -  person Armin Rigo    schedule 02.01.2016
comment
Вы также можете попробовать pypy -m ensurepip, который работает так же, как и в последних вариантах CPython 2.7.x.   -  person Armin Rigo    schedule 02.01.2016


Ответы (2)


Как насчет установки PyPy из архивов Ubuntu sudo apt install pypy. Или, если вам нужна последняя версия, из PyPy PPA.

Затем, если вы создадите virtualenv, внутри него будет pip:

$ sudo apt-get install virtualenv
$ virtualenv -p pypy ve
$ . ve/bin/activate
$ pip install ...
person tumbleweed    schedule 02.01.2016
comment
Вам не нужен конкретный PyPy для использования virtualenv таким образом; эти команды должны работать с любым PyPy. - person Armin Rigo; 02.01.2016
comment
Нет, это было намеренно apt. Вопрос был задан как относящийся к Ubuntu 15.04, в которой есть новая красивая команда apt. - person tumbleweed; 15.01.2016
comment
Что ж, в Ubuntu 16.04 это приведет к сбою при создании файлаvirtencelenv. - person Ant6n; 03.10.2016

У меня была такая же проблема, и решение простое, вам нужно запустить эту команду:

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
person luisurrutia    schedule 10.02.2016
comment
Можете ли вы объяснить, что делает это решение? - person Ant6n; 03.10.2016
comment
Ну, я не помню почему (почти 7 месяцев назад), но когда у вас есть свежая установка сервера Ubuntu, вам нужно настроить локаль, эти параметры используются многими приложениями для определения кодировки и других вещей. Ответ отредактирован, чтобы добавить команды ubuntu. - person luisurrutia; 03.10.2016