Python3 pip не работает с момента обновления системы - PullRequest
0 голосов
/ 03 мая 2018

После обновления одной из моих машин с Ubuntu 16.04 на AWS python / pip, похоже, не работает.

ubuntu@host:~$ pip install celery
Traceback (most recent call last):
  File "/home/ubuntu/virtualenvs/myenv/bin/pip", line 7, in <module>
    from pip import main
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/site-packages/pip/__init__.py", line 43, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/site-packages/pip/utils/__init__.py", line 23, in <module>
    from pip.locations import (
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/site-packages/pip/locations.py", line 9, in <module>
    from distutils import sysconfig
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/distutils/__init__.py", line 25, in <module>
    from distutils import dist, sysconfig
ImportError: cannot import name 'dist'

ubuntu@host:~$ python3.6 -m pip install celery
Traceback (most recent call last):
  File "/usr/lib/python3.6/runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.6/runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.6/runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/site-packages/pip/__init__.py", line 43, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/site-packages/pip/utils/__init__.py", line 23, in <module>
    from pip.locations import (
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/site-packages/pip/locations.py", line 9, in <module>
    from distutils import sysconfig
  File "/home/ubuntu/virtualenvs/myenv/lib/python3.6/distutils/__init__.py", line 25, in <module>
    from distutils import dist, sysconfig
ImportError: cannot import name 'dist'

Система запускает python3.6, установленный через jonathonf/python-3.6 ppa. До обновления системы (apt-get update && apt-get upgrade) все работало как положено. Я также подтвердил это на других машинах, которые я еще не обновил.

Мне также не повезло, установка python3.6 в виртуальной среде на новую машину, так что, думаю, недавний выпуск или обновление что-то здесь сломали?


редактирование:

Я также сталкиваюсь с подобными проблемами при установке на свежую Ubuntu:

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo add-apt-repository jonathonf/python-3.6
$ sudo apt-get update
$ sudo apt-get install python3.6

$ stat /usr/lib/python3.6/distutils/dist.py
stat: cannot stat '/usr/lib/python3.6/distutils/dist.py': No such file or directory

$ ll /usr/lib/python3.6/distutils/
total 36
drwxr-xr-x  2 root root  4096 May  3 15:55 ./
drwxr-xr-x 28 root root 12288 May  3 15:44 ../
-rw-r--r--  1 root root   236 May  3 11:50 __init__.py
-rw-r--r--  1 root root 12345 May  3 11:50 version.py

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial

Ответы [ 6 ]

0 голосов
/ 19 мая 2019

Я только что перешел на disco dingo (19.04), и он сломал мой python3.6 со следующим сообщением об ошибке:

tox -e py36 --recreate                
...
Traceback (most recent call last):
  File "/home/pierre/.local/lib/python3.7/site-packages/virtualenv.py", line 22, in <module>
    import distutils.spawn
ModuleNotFoundError: No module named 'distutils.spawn'
Running virtualenv with interpreter /usr/bin/python3.6

Вы можете переключиться на Python 3.7, который кажется новым по умолчанию: tox -e py37 работает правильно.

0 голосов
/ 08 сентября 2018

Вы можете попробовать это:

# dpkg -l | grep python3.5

Вы получите список зависимостей, добавьте их все в конец этой строки:

# apt-get --purge remove <here>

Теперь запустите это:

# apt-get install python3.5-dev

Вот ссылка на хорошую статью: https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux

0 голосов
/ 06 августа 2018

пробег

sudo apt update && sudo apt install -f && sudo apt upgrade

sudo apt-get install python3.6

чтобы побороть сломанную установку

0 голосов
/ 05 мая 2018

Это решает проблему для меня в Ubuntu и Linux Mint. Сначала убедитесь, что python3.6 установлен через ppa:jonathonf/python-3.6, выполнив команды:

ls /etc/apt/sources.list.d
sudo rm -i /etc/apt/sources.list.d/jonathonf-python-3_6-xenial.list

Затем добавьте deadsnakes PPA, используя:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update

И, наконец, удалите / установите или переустановите python3.6

sudo apt-get remove python3.6
sudo apt-get install python3.6

Я также столкнулся с неудовлетворенными зависимостями при переустановке python. Это было решено удалением libpython3.6-minimal вручную. Надеюсь, это поможет!

0 голосов
/ 03 мая 2018

Вы действительно не сумасшедший, та же проблема здесь.

Вы также можете попробовать предыдущую версию ppa из того же ppa, пока они не исправят это: https://launchpad.net/~jonathonf/+archive/ubuntu/python-3.6

пример командной строки:

apt-get install python3.6=3.6.3-1ubuntu1~17.04.york1
0 голосов
/ 03 мая 2018

Я протестировал PPA в свежем док-контейнере, и похоже, что пакет сломан, все distutils модули отсутствуют после установки. Похоже, пакет был недавно перестроен; возможно это новая проблема.

Вы можете открыть ошибку и подождать, пока сопровождающий PPA не исправит ее, но кроме этого вы ничего не можете сделать. Конечно, вы можете попробовать возиться с установкой:

$ wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
$ tar xvf Python-3.6.5.tgz
$ rsync -av Python-3.6.5/Lib/distutils/ /usr/lib/python3.6/distutils/

Конечно, это очень грязная вещь, потому что я не знаю, какие файлы должен иметь правильный пакет из этого PPA. Таким образом, я не могу дать вам никакой гарантии, будет ли это работать для вас, и не будет вводить какие-либо новые ошибки, но, по крайней мере, я смогу запустить pip снова и установить пакет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...