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" ...)

  1. Теперь, чтобы активировать вашу виртуальную среду, из каталога вашей папки введите следующую команду, это активирует нашу виртуальную среду в папке «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-pip
  • python3.8 -m venv venv
  • source venv/bin/activate
  • python --version # -> Python 3.8.0
  • pip --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-whlpackage является источником этих файлов. Похоже, это верно как для 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.

Все, что вам нужно сделать, это:

  1. Установите последнюю версию pip, установив установщик pyenv
  2. Убедитесь, что вы выполните шаги по установке 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:

  1. Установите виртуалэнв: pip3 виртуалэнв
  2. Создайте virtualenv без pip: python3 -m venv --without-pip <путь>
  3. Скачал правильный загрузчик pip: https://bootstrap.pypa.io/pip/3.5/get-pip.py
  4. Выполнить: <путь>/bin/python3 get-pip.py

Я сделал «source <path>/bin/activate» и получил рабочую среду.

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

Если это так, попробуйте позвонить deactivate.

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