pyvenv не работает, так как surepip недоступен
Я обновил Ubuntu 14.04 до Ubuntu 16.04 несколько дней назад. Когда я пытаюсь создать виртуальную среду с помощью
pyvenv .venv
или же
python3 -m venv .venv
Есть ошибка:
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: ['/usr/bin/python3.5', '-Im', 'ensurepip', '--upgrade', '--default-pip']
Я пытался запустить оба
sudo apt-get install python3-venv
а также
sudo apt-get install python3.5-venv
но это не решило мою проблему.
Может кто-нибудь, пожалуйста, помогите? Спасибо
33 ответа
Попробуйте установить python3.6-venv:
sudo apt-get install python3.6-venv
Кажется, это была проблема с локалью. Решается путем выполнения:
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales
найдено в этой теме Ошибка языкового стандарта Python: неподдерживаемый языковой стандарт
В Windows Linux Subsystem и Ubuntu 18.04 это было вызвано тем, что я недавно не обновился.
Я побежал:
sudo apt update
sudo apt upgrade
затем sudo apt install python3-venv
работал.
Обратите внимание, что я также пробовал решение UTF-8 заранее (я сделал его частью моего .bashrc
), так что это могло бы стать фактором.
Один из других ответов исправил это для меня в прошлый раз, но с Python 3.7 мне пришлось сделать:
apt install python3-pip python3-setuptools python3.7-venv
С последующим
python3.7 -m venv /path/to/venv
Решил аналогичные проблемы в Ubuntu18, когда наткнулся на этот ответ. Он похож на тот, который работал с @Niko Rikken, accept действительно не нуждается в каких-либо новых пакетах PPA и "python3.8-distutils". Я устанавливал новую среду python3.8 с venv, и у меня уже был установлен и обновлен "python3-venv", поэтому я решил установить только "python3.8-venv":
% sudo apt-get install python3.8-venv
И это заставило эти строки работать:
% python3.8 -m venv ~/envs/new_env
% source ~/envs/new_env/bin/activate
В моем случае сработали следующие шаги:
- Ubuntu 18.04.4 LTS
$ sudo apt-get install python3-venv python3.7-venv
$ python3.7 -m venv [your_path_to_virtual_env_here]
На случай, если это кому-нибудь поможет, я получаю ту же ошибку в Ubuntu 18.04. Установка локали не работает и пытается установить python3-venv
дал ошибку:
$ 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.6-venv (>= 3.6.5-2~) but it is not going to be installed
Depends: python3 (= 3.6.5-3) but 3.6.7-1~18.04 is to be installed
E: Unable to correct problems, you have held broken packages.
И похоже, что в репозитории apt было две версии python:
$ apt list python3 -a
python3/bionic-updates,now 3.6.7-1~18.04 amd64 [installed]
python3/bionic 3.6.5-3 amd64
Я пытался установить Python3.6.5-3
но apt хотел удалить все зависимости. Способ, которым я смог решить проблему, установив Python3.7 и создав Venv с этим:
$ sudo apt-get install python3.7 python3.7-venv
$ python3.7 -m venv my_venv
Я столкнулся с этой проблемой в Ubuntu 18.04 из- за недавнего выпуска Python-3.8. Мое решение состояло в том, чтобы добавить PPA Deadsnakes, который обеспечивает необходимыеpython3.8-distutils
пакет. Вpython3.8-venv
пакет уже находится в репозитории. Благодаря этому сообщению в блоге:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8
sudo apt install python3.8-distutils
sudo apt install python3.8-venv
Примечание. Это временное решение. В ближайшее время требуютсяpython3.8-distutils
пакет, вероятно, будет доступен в репозитории Ubuntu по умолчанию.
Редактировать:
Для Ubuntu 20.04 LTS пакет python3-distutils основан на Python 3.8. На данный момент нет пакета distutils пакета Python 3.8, доступного для Ubuntu 18.04 LTS.
Как упоминалось в других комментариях к этой теме, distutils
может не потребоваться. Это было для моего случая использования, но, пожалуйста, рассмотрите это решение перед добавлением дополнительных PPA.
Я должен был упомянуть конкретную
версиюpython
и замените python 3.10 своей версией
$ sudo apt-get update -y && sudo apt-get upgrade -y
$ sudo apt-get install python3.10-venv
Создание виртуальной среды
$ python3.10 -m venv --system-site-packages Project_Name
1. Сначала создайте каталог:
mkdir testing
2.Затем переместился в этот каталог с именем testing:
cd testing
3.Когда вы вводите следующую команду в этом каталоге:
python3 -m venv env
У вас есть такая ошибка:
Виртуальная среда не была создана, потому что surepip недоступен. В системах Debian / Ubuntu вам необходимо установить пакет python3-venv, используя следующую команду.
apt install python3.8-venv
4. Введите следующую команду, но перед этим следите за версией Python, установленной на машине; в моем случае это python3.8
sudo apt установить python3.8-venv
5. Теперь мы можем создать виртуальную среду и хранить ее инструменты в папке «bhandari».
python3 -m venv bhandari
Примечание: вы можете назвать эту папку «bhandari»; любое имя, которое вам нравится (стандартная практика - называть его "env" ...)
Теперь, чтобы активировать вашу виртуальную среду, из каталога вашей папки введите следующую команду, это активирует нашу виртуальную среду в папке «bhandari».
источник bhandari / bin / активировать
7. Если вы успешно активировали свою виртуальную среду, вы должны увидеть слово (bhandari), указывающее, что мы работаем в виртуальной среде.
После этого мы можем установить все, что будет изолировано от остальной системы ....
Python обновлен или Python по умолчанию изменен, а venv уже установлен
Venv, установленный в вашей системе, установлен вашей предыдущей версией python(скажем, python3.6). поэтому venv не работает с текущей версией Python(скажем, 3.8).
поэтому сначала проверьте версию python или python3 по умолчанию (предположим, что текущая версия ur - python3.8).
переустановите виртуальную среду, указав текущую версию Python(3.8) следующим образом
sudo apt-get install python3.xx-venv >> replace xx with your current/default python version
Если это поможет вам, пожалуйста, проголосуйте за, я новичок на этой платформе.
Я столкнулся с той же проблемой и ищу решение. Речь идет о проблеме:
surepip отключен в Debian/Ubuntu для системного python.
И это мое решение:
python3 -m venv myvenv --without-pip --system-site-packages
Попробуйте следующие команды:
sudo apt install python-virtualenv
virtualenv --python=python3.6 myenv
Эти команды могут сработать для вас.
Если вы получите какую-либо ошибку, например
E: Unable to locate package python3-venv
Затем попробуйте следующие команды:
sudo apt install python3.6-venv
Пытаться: python3.* -m venv myvenv -
И не забудьте заменить * вашей конкретной версией python
Попробуйте установить
python3-distutils
также.
В целом, для python 3.8 у меня сработало следующее.
$ apt-get install python3.8 python3.8-venv python3.8-distutils python3.8-dev
Если вы намеревались получить python3.8 incl. pip и venv в Ubuntu 18.04:
sudo apt install python3.8 python3.8-venv python3-pip
# нет пакета python3.8-pippython3.8 -m venv venv
source venv/bin/activate
python --version
# -> Python 3.8.0pip --version
# -> pip 9.0.1 из /home/user/venv/lib/python3.8/site-packages (python 3.8)
Я только что столкнулся с этой проблемой в нескольких системах Debian / Ubuntu. Та же ошибка, что и выше.
Результаты
Я попытался создать venv вручную с помощью:
python -m venv venvdir
Это не удалось так же, как и другие. Но это действительно создать оболочку venv. Итак, я попробовал запустить surepip :
venvdir/bin/python -m ensurepip
Traceback (most recent call last):
File "/usr/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/usr/lib/python3.9/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/usr/lib/python3.9/ensurepip/__init__.py", line 266, in _main
return _bootstrap(
File "/usr/lib/python3.9/ensurepip/__init__.py", line 166, in _bootstrap
copy_wheels(dependencies, venv_wheel_dir, sys.path)
File "/usr/lib/python3.9/ensurepip/__init__.py", line 144, in copy_wheels
assert len(wheel_names) == 1, wheel_names
AssertionError: ['/usr/share/python-wheels/pyparsing-2.2.0-py2.py3-none-any.whl', '/usr/s
hare/python-wheels/pyparsing-2.4.7-py2.py3-none-any.whl']
Это казалось странным. Быстрый взгляд на
/usr/share/python-wheels/
обнаружил - действительно - несколько версий одного и того же колеса, как предполагает ошибка. Я понятия не имею, почему surepip также гарантирует, что он находит только один файл колеса, поймите.
Решение
Проверка
dpkg -S /usr/share/python-wheels
указал, что
python-pip-whl
package является источником этих файлов. Похоже, это верно как для Ubuntu, так и для Debian.
Так я и сделал:
cd /usr/share
sudo mv python-wheels python-wheels.old
sudo apt reinstall python-pip-whl
И это сработало - ошибок больше нет. Больше нет дубликатов в
/usr/share/python-wheels
Совершенно непонятно, как были дубликаты или почему surepip так чувствителен к дубликатам ... Вероятно, где-то произошла ошибка при обновлении пакета.
Решение для установки python3-venv является точным, поскольку Debian/Ubuntu разделяет дистрибутив Python на несколько пакетов, поэтому на самом деле у вас нет полной установки Python. Если вы действительно не хотите устанавливать этот пакет apt, вот альтернатива
python3 -m pip install virtualenv
virtualenv .venv
Это создаст полностью функционирующий venv.
У меня была такая же проблема - в python env есть 2 версии для 2.7 и 3.6.
Все, что вам нужно сделать, это:
- Установите последнюю версию pip, установив установщик pyenv
- Убедитесь, что вы выполните шаги по установке pyenv, найденные здесь
Удачи!
У меня это сработало... Сначала я побежал
sudo apt-get update
потом
sudo apt-get install -y python3-venv zip
Если вы столкнулись с этой проблемой при попытке запустить
python -m build
для создания пакета python это означает, что, вероятно, проблема с синтаксисом в вашем
setup.cfg
или же
setup.py
файл, который вызывает ошибку при создании временного venv, необходимого для установки зависимостей.
С использованием
pip wheels .
даст вам менее вводящее в заблуждение сообщение об ошибке.
У меня была такая же проблема для существующего проекта при выполнении python3 -m venv venv
. Я только что обновил свои версии Ubuntu и Python. После удаления уже существующегоvenv
папка проблема была решена. (Я также пробовал решение UTF-8.)
Моя проблема была связана с разрешениями и владением. Я вошел в систему под другим пользователем в качестве владельца текущего каталога, что привело к этой ошибке. После просмотра и исправления всех разрешений я смог установить venv regularl
Недавно столкнулся с той же проблемой. Ни одно из упомянутых выше решений не помогло мне. В конце концов я заставил его работать, установив pip3.
apt-get install python3-pip
# then run
python3.8 -m venv env
Для Linux он не установлен по умолчанию, вам необходимо установить venv
// at first check python version
python --version
// install
sudo apt update
sudo apt install python3.8-venv
sudo apt install python3.8-distutils
// create new env
python3 -m venv project-name
source project-name/bin/activate
Все эти предложения мне не помогли.
$ apt list python3 -a
python3/now 3.6.7-1~18.04 amd64 [installed,local]
python3/bionic 3.6.5-3 amd64
Так я и сделал: sudo apt-get install python3/bionic
Теперь у меня есть python 3.6.5, и apt-list показал лучший список: $ apt list python3 -a python3/bionic 3.6.5-3 amd64
С участием sudo apt-get install python3-venv/bionic
Я смог установить pythno3-venv, и все заработало.
В моем случае бег sudo apt-get install python3.8-venv
успешно, но показывает ту же ошибку при запуске python3 -m venv .venv
.
Наконец, эта команда работает без изменения локали.
python3.8 -c 'import venv; venv.create(".venv", with_pip=True)'
Вот мой ответ для Ubuntu 14.04. Мне удалось заставить venv и pip работать с различными версиями Python. Детали:
3.4: Ubuntu 14.04 имеет Python 3.4 (как пакет python3.4 и т. Д.). Оно работает:
$ sudo apt-get install python3.4 python3.4-dev python3.4-venv gcc libc6-dev $ mkdir /tmp/try3.4 $ python3.4 -m venv /tmp/try3.4 $ . /tmp/try/bin/activate (try3.4) $ pip install print-hello-world ... (try3.4) $ print-hello-world Hello World!
Если
python3.4-venv
удален изapt-get install
команда выше, затемpython3.4 -m venv
отображает то же сообщение об ошибке, что и в вопросе. Однако в сообщении об ошибке упоминаетсяapt-get install python3-venv
чтобы решить эту проблему, но это не работает, такого пакета нет. (Правильное имя пакетаpython3.4-venv
.)Обратите внимание, что Python 3.4 довольно старый, и некоторые пакеты Python, доступные в PyPI (через pip), с ним не работают.
3.5: Его можно установить из репозитория deadsnakes. Оно работает:
$ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt-get update $ sudo apt-get install python3.5 python3.5-dev python3.5-venv gcc libc6-dev $ mkdir /tmp/try3.5 $ python3.5 -m venv /tmp/try $ . /tmp/try/bin/activate (try3.5) $ pip install print-hello-world ... (try3.5) $ print-hello-world Hello World!
3.6: То же самое, его можно установить из репозитория deadsnakes. Оно работает:
$ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt-get update $ sudo apt-get install python3.6 python3.6-dev python3.6-venv gcc libc6-dev $ mkdir /tmp/try3.6 $ python3.6 -m venv /tmp/try3.6 $ . /tmp/try3.6/bin/activate (try3.6) $ pip install print-hello-world ... (try3.6) $ print-hello-world Hello World!
3.7: Не работает, потому что
pip install
терпит неудачу сimport _ssl
, а python3.7 в репозитории deadsnakes не имеет этого модуля, потому что Ubuntu 14.04 поставляется со старой версией OpenSSL, которую Python 3.7 не поддерживает. Подробнее см. В этой ошибке.3.8--: Нет пакета Ubuntu 14.04 для этих версий Python в репозиториях Ubuntu или deadsnakes.
У меня нет прав sudo, и я должен использовать python3.5:
- Установите виртуалэнв: pip3 виртуалэнв
- Создайте virtualenv без pip: python3 -m venv --without-pip <путь>
- Скачал правильный загрузчик pip: https://bootstrap.pypa.io/pip/3.5/get-pip.py
- Выполнить: <путь>/bin/python3 get-pip.py
Я сделал «source <path>/bin/activate» и получил рабочую среду.
В моем случае команда не удалась, потому что я все еще был в виртуальном окружении, но не заметил этого очень быстро.
Если это так, попробуйте позвонить
deactivate
.