pyvenv не работает, потому что surepip недоступен

88

Я обновился с 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

но это не решило мою проблему.

Луи М
источник
Моя проблема решена на ОС с информацией о выпуске: ID дистрибьютора: LinuxMint Описание: Linux Mint 18.3 Sylvia Release: 18.3
nix
ни один из ответов не решил это для меня. все еще застрял на той же ошибке
Шоаиб Икбал

Ответы:

114

Похоже, это проблема локали. Решается путем выполнения:

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

в этом потоке обнаружена ошибка языкового стандарта Python: неподдерживаемая настройка языкового стандарта

Луи М
источник
34
Это безумие, но это правда
user1703761
8
Действительно любопытно, но кто-то знает, в чем причина?
Хуан Антонио
не работал у меня на ОС с информацией о дистрибутиве: ID дистрибьютора: LinuxMint Описание: Linux Mint 18.3 Sylvia Release: 18.3
nix
1
Спасибо, запускаем здесь минимальную настройку докеров. Никогда бы не догадался.
Антти Хаапала
1
@JuanAntonio Кажется, что Ubuntu (по крайней мере, 16.04) - это бистро, отличное от Unicode, как упоминалось в этом выпуске: Tickets.puppetlabs.com/browse/IMAGES-498 Думаю, нам следует добавить настройки локали к нашему серверу начальной загрузки .. .
Андреас Bergström
106

попробуйте установить python3.6-venv:

sudo apt-get install python3.6-venv
jnicho02
источник
Спасибо за решение. Он работал 16.04 (учитывая, что python3.6, конечно, уже был установлен). Я НЕ понимаю, что: 1. Venv должен делать использование apt-get ненужным. Это часть стандартной библиотеки. 2. почему версия pip по умолчанию, использующая venv, не является последней версией?
Лайонел Требюшон
26
... или sudo apt-get install python3.7-venvесли вы используете python 3.7
Alleo
12
... или sudo apt-get install python3.8-venvесли вы используете python 3.8
cowlinator
3
... или sudo apt-get install python3.9-venvесли вы используете python 3.9 (на будущее)
Андрей Семакин
7
... или sudo apt-get install python3.10-venvесли вы используете python 3.10 (на случай, если мы переживем 2020 год)
Steven667
44

Один из других ответов исправил это для меня в прошлый раз, но с Python 3.7 мне пришлось сделать:

apt install python3-pip python3-setuptools python3.7-venv

С последующим

python3.7 -m venv /path/to/venv
Аарон Ф
источник
22

В подсистеме Windows Linux и Ubuntu 18.04 это было вызвано тем, что я недавно не обновлялся.

Я побежал:

sudo apt update
sudo apt upgrade

Потом sudo apt install python3-venvсработало.

Обратите внимание, что я также заранее пробовал решение UTF-8 (я сделал его частью своей .bashrc), так что это могло быть фактором.

Одноименный
источник
4
Я не думаю, что решение UTF-8 имеет значение. Я также на WSL Ubuntu 18.04 и шаги , sudo apt updateи sudo apt install python3-venvбыли достаточны.
Theja
1
Это единственное решение, которое у меня сработало! Я попытался изменить языковой стандарт и установить более новую версию Python, но безрезультатно
arctic.queenolina
2
это сработало и у меня, я попробовал несколько других вариантов .. не сработало,
Ученик
молодец, у меня сработало !!!
Reckoner
9

В моем случае сработали следующие шаги:

  • Ubuntu 18.04.4 LTS
 $ sudo apt-get install python3-venv python3.7-venv
 $ python3.7 -m venv [your_path_to_virtual_env_here]
Эдуардо Р.Э.
источник
8

Если это кому-то поможет, я получал ту же ошибку в 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
Nbwoodward
источник
1
Это сработало для меня. Сделал sudo apt install python3.8 python3.8-venvи создал виртуальную среду, используя python3.8 -m venv venv_name. Благодарность!
Амир А. Шабани
5

Я столкнулся с этой проблемой в 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.

Нико Риккен
источник
1
sudo apt install python3.8-venvбыл для меня победителем. Вся остальная помощь, которую я мог найти, заставляла меня пытаться установить python3-venvвместо этого.
user1717828
4

Решил аналогичные проблемы в 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
Рустам А.
источник
3

Пытаться : python3.* -m venv myvenv -

И не забудьте заменить * на вашу конкретную версию python

Nax
источник
2

У меня была такая же проблема - у python env есть 2 версии для 2.7 и 3.6.

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

  1. Установите последнюю версию pip, установив установщик pyenv
  2. Убедитесь, что вы выполнили шаги по установке pyenv, указанные здесь

Удачи!

Самия Умар
источник
2

Если вы намеревались получить 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)
langlauf.io
источник
2

Я столкнулся с той же проблемой и ищу решение. Речь идет о проблеме:

surepip отключен в Debian / Ubuntu для системного python.

И это мое решение:

python3 -m venv myvenv --without-pip --system-site-packages
hichem
источник
Обратите внимание, что среда python без него pipможет оказаться бесполезной.
анкостис
2

Попробуйте следующие команды:

sudo apt install python-virtualenv
virtualenv --python=python3.6 myenv

Эти команды могут сработать для вас.

Если вы получите какую-либо ошибку, например, E: Unable to locate package python3-venv попробуйте следующие команды:

sudo apt install python3.6-venv
Яш
источник
1

У меня была такая же проблема для существующего проекта при выполнении python3 -m venv venv. Я только что обновил свои версии Ubuntu и Python. После удаления уже существующей venvпапки проблема была решена. (Я также пробовал решение UTF-8 .)

Sparwer
источник
1

Моя проблема была связана с разрешениями и владением. Я вошел в систему под другим пользователем в качестве владельца текущего каталога, что привело к этой ошибке. После просмотра и исправления всех разрешений я смог установить venv regularl

ДарвинсБадди
источник
Это и была моя проблема. Когда я перешел в домашний каталог текущего пользователя, команда выполнилась нормально. Это должно быть ошибкой, предполагающей, что python3-venv не установлен, когда на самом деле возникает проблема с разрешениями.
Cosmicnet,
0

Все эти предложения мне не помогли.

$ 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, и все заработало.

Стефан
источник
Я активно использую Ubuntu около 5 лет, но я никогда раньше не видел синтаксиса "python3 / bionic": О, ваш ответ решил мою проблему, спасибо.
Кодманьяга
Рад, что он работает, я тоже не знал этого синтаксиса, я просто попробовал, потому что «apt list» действительно показывал пакеты таким образом ;-) Если этот ответ вам помог, вы можете нажать кнопку «вверх».
Стефан,
Если вы можете использовать нестандартные имена пакетов, это означает, что у вас настроены нестандартные источники пакетов. apt-cache policy python3/bionicможет помочь вам выяснить, откуда взялся этот пакет. Это не из Ubuntu.
тройняшек
0

В моем случае запуск проходит sudo apt-get install python3.8-venvуспешно, но при запуске отображается та же ошибка python3 -m venv .venv.

Наконец, эта команда работает без изменения локали.

python3.8 -c 'import venv; venv.create(".venv", with_pip=True)'

Юк Ван
источник
0

У меня это сработало ... Сначала я побежал

sudo apt-get update

затем

sudo apt-get install -y python3-venv zip

itslogique
источник
-1
sudo apt-get update 

Работал у меня.

Изменить: я хотел бы знать, в чем именно была проблема, но я не знаю. Я пробовал запускать команды, как описано вопрошателем, и это давало ошибку, затем я обновился, и это сработало. :-D

user1953366
источник
3
Пожалуйста, поясните, почему ваш ответ решает вопрос.
RyanNerd
1
Выполнение команд и обновление дерева пакетов не являются ответом, просьба уточнить
Андрес Фелипе
-2

У меня ничего из этого не получилось. Я использую Ubuntu 18.04. Просто полностью удалил анаконду, и все заработало. Выложил на всякий случай кому поможет. Команды для удаления: https://linuxize.com/post/how-to-install-anaconda-on-ubuntu-18-04/

rm -rf ~/anaconda3
export PATH="/home/linuxize/anaconda3/bin:$PATH" 
rm -rf ~/.condarc ~/.conda ~/.continuum
Анируд Агарвал
источник