После обновления системы до 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
возвращает пустой
Оказывается, мне приходилось удалять различные бионические пакеты 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, которые привели к несовместимости.
Если посмотреть на предоставленную вами информацию, ваша проблема может быть связана с установкой 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. Предыдущий останется сломанным.