Невозможно установить python venv на Ubuntu 20.04 после обновления с Bionic

После обновления системы до Ubuntu 20.04 у меня возникли различные проблемы с python. Текущая проблема состоит в том, что я не могу создать виртуальную среду:

python3 -m venv env

The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: ['/home/XXX/my-project/env/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

Чтобы узнать больше о том, почему это не удается, я запустил ./ env / bin / python3 -Im surepip --upgrade --default-pip :

/env/bin/python3: Error while finding module specification for 'ensurepip.__main__' (ImportError: cannot import name '_bundled' from partially initialized module 'ensurepip' (most likely due to a circular import) (/usr/lib/python3.9/ensurepip/__init__.py))

Конечно, я попробовал предложенный шаг с sudo apt-get install python3-venv :

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python3-venv : Depends: python3.8-venv (>= 3.8.2-1~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

lsb_release -a вывод:

Описание: Ubuntu 20.04.1

LTS Release: 20.04

Кодовое имя: focal

где python вывод:

python: / usr / bin / python3.6 /usr/bin/python3.7 /usr/bin/python2.7-config /usr/bin/python2.7 /usr/bin/python3.6m /usr/bin/python3.9 / usr / bin / python3.8 / usr / bin / python /usr/bin/python3.7m /usr/lib/python3.6 /usr/lib/python3.7 /usr/lib/python2.7 / usr / lib / python3.9 /usr/lib/python3.8 /etc/python3.6 /etc/python3.7 /etc/python2.7 /etc/python3.9 /etc/python3.8 / etc / python / usr / local / lib / python3.6 /usr/local/lib/python3.7 /usr/local/lib/python2.7 /usr/local/lib/python3.9 /usr/local/lib/python3.8 / usr / include / python3.6 /usr/include/python2.7 /usr/include/python3.6m /usr/include/python3.8 /usr/share/python[1228 visible/etc/apt/sources.list содержит только фокусный .

также запускал

sudo apt update  
sudo apt upgrade   

удален python3.9, sudo apt install python3.8-venv завершается с той же ошибкой

python3.8-venv: Зависит: python3. 8 (= 3.8.5-1 ~ 20.04), но необходимо установить 3.8.6-1 + bionic1 E: Не удалось исправить проблемы, у вас были поврежденные пакеты.

dpkg --get-selections | grep hold возвращает пустой

1
задан 21 October 2020 в 17:40

2 ответа

Оказывается, мне приходилось удалять различные бионические пакеты python:

sudo apt remove python3.8
sudo apt remove python3.8-minimal
sudo apt remove libpython3.8-stdlib
sudo apt remove libpython3.8-minimal

Каждый раз, когда он жаловался на них ...

The following packages have unmet dependencies:
 python3.8 : Depends: python3.8-minimal (= 3.8.5-1~20.04) but 3.8.6-1+bionic1 is to be installed
             Depends: libpython3.8-stdlib (= 3.8.5-1~20.04) but 3.8.6-1+bionic1 is to be installed

... Я удалил их

... пока я не смог (пере) установить эти:

sudo apt install python3.8-minimal
sudo apt install python3.8
sudo apt install python3.8-venv
sudo apt install python3-distutils

и наконец смог запустить python3.8 -m venv env

Таким образом, похоже, что обновление с Bionic Beaver до Focal Fossa частично оставила старые пакеты python, которые привели к несовместимости.

1
ответ дан 4 January 2021 в 08:19

Если посмотреть на предоставленную вами информацию, ваша проблема может быть связана с установкой python3.9.

В Ubuntu 20.04 версия python по умолчанию - 3.8. Таким образом, другие пакеты, зависящие от python, должны ожидать python3.8.

Однако в вашей системе это значение по умолчанию было изменено на Python 3.9, так как попытка создать новый venv завершилась средой Python 3.9, как видно из выходных данных. .

Как упоминается в исходной ошибке, вам необходимо установить пакет python3-venv с помощью apt . Но так как был установлен и python3.9, я считаю, что apt больше не может понять, что устанавливать. Таким образом, явное упоминание полной версии может решить вашу проблему.

sudo apt install python3.8-venv

ref: apt-get, unmet dependencies, ... «но он не будет установлен»

После этого вам необходимо создайте venv, также явно передав полную версию pythong

python3.8 -m venv env

. Если вы намерены использовать Python 3.9 и если он был установлен с apt , вы можете исправить это, установив python3. 9-venv вместо python3.8-venv

sudo apt install python3.9-venv

ps. Вам нужно будет снова создать новую виртуальную среду после установки пакета apt. Предыдущий останется сломанным.

3
ответ дан 4 January 2021 в 08:19

Другие вопросы по тегам:

Похожие вопросы: