pyvenv não funciona porque o assegurepip não está disponível


88

Eu atualizei do ubuntu 14.04 para o ubuntu 16.04 alguns dias atrás. Quando tento criar um ambiente virtual usando

pyvenv .venv

ou

python3 -m venv .venv

Há um erro:

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']

Eu tentei correr ambos

sudo apt-get install python3-venv

e

sudo apt-get install python3.5-venv

mas não resolveu meu problema.


Meu problema foi resolvido no sistema operacional com informações de lançamento: ID do distribuidor: LinuxMint Descrição: Linux Mint 18.3 Sylvia Lançamento: 18.3
nix

nenhuma das respostas resolveu para mim. ainda preso no mesmo erro
Shoaib Iqbal

Possível duplicata de erro de local
SS Anne

Respostas:


114

Parece que foi um problema de localidade. Resolvido executando:

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

encontrado neste thread Python locale error: unsupported locale setting


34
É uma loucura, mas é verdade
user1703761

8
Muito curioso, mas alguém sabe qual é o motivo?
Juan Antonio

não funcionou para mim no sistema operacional com informações de distro: ID do distribuidor: LinuxMint Descrição: Linux Mint 18.3 Sylvia Lançamento: 18.3
nix

1
Obrigado, executando uma configuração mínima do docker aqui. Eu nunca teria imaginado.
Antti Haapala

1
@JuanAntonio Parece que o Ubuntu (pelo menos 16.04) é um bistrô não Unicode pronto para uso, conforme mencionado nesta edição: tickets.puppetlabs.com/browse/IMAGES-498 Acho que devemos adicionar configurações de localidade ao bootstrap do nosso servidor. .
Andreas Bergström

106

tente instalar o python3.6-venv:

sudo apt-get install python3.6-venv

Obrigado pela solução. Funcionou em 16.04 (visto que o python3.6 já estava instalado, é claro). O que eu NÃO entendo é que: 1. o venv deve tornar desnecessário o uso do apt-get. Faz parte da biblioteca padrão. 2. por que a versão padrão do pip usando venv não é a versão mais recente?
Lionel Trebuchon

26
... ou sudo apt-get install python3.7-venvse você usa python 3.7
Alleo

12
... ou sudo apt-get install python3.8-venvse você usar o python 3.8
cowlinator

3
... ou sudo apt-get install python3.9-venvse você usar python 3.9 (para o futuro)
Andrey Semakin

7
... ou sudo apt-get install python3.10-venvse você usar o python 3.10 (caso sobrevivamos a 2020)
Steven667

44

Uma das outras respostas corrigiu isso para mim da última vez, mas com Python 3.7 eu tive que fazer:

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

Seguido por

python3.7 -m venv /path/to/venv

22

No subsistema Windows Linux e Ubuntu 18.04, isso foi causado por eu não ter atualizado recentemente.

Eu corri:

sudo apt update
sudo apt upgrade

Então sudo apt install python3-venv funcionou.

Observe que eu também já havia tentado a solução UTF-8 antes (eu a incluí na minha .bashrc), então isso pode ter contribuído para isso.


4
Não acho que a solução UTF-8 importe. Também estou no WSL Ubuntu 18.04 e as etapas sudo apt updatee sudo apt install python3-venvforam suficientes.
Theja

1
Esta é a única solução que funcionou para mim! Tentei alterar o local e instalar a versão mais recente do Python sem sucesso
arctic.queenolina

2
isso funcionou para mim também, tentei várias outras opções .. não funcionou,
Aprendiz de

brilhante, funcionou pra mim !!!
Reckoner

9

No meu caso, as próximas etapas funcionaram:

  • 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

Caso isso ajude alguém no futuro, eu estava recebendo o mesmo erro no Ubuntu 18.04. Definir as localidades não funcionou e ao tentar instalar python3-venvdeu o erro:

$ 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.

E parece que o repositório apt tinha duas versões de python:

$ apt list python3 -a
python3/bionic-updates,now 3.6.7-1~18.04 amd64 [installed]
python3/bionic 3.6.5-3 amd64

Tentei instalar, Python3.6.5-3mas o apt queria desinstalar todas as dependências. Consegui resolver o problema instalando o Python3.7 e criando o venv com isso:

$ sudo apt-get install python3.7 python3.7-venv
$ python3.7 -m venv my_venv

1
Isso funcionou para mim. Fez sudo apt install python3.8 python3.8-venve criei o ambiente virtual usando python3.8 -m venv venv_name. Obrigado!
Amir A. Shabani

5

Eu encontrei esse problema no Ubuntu 18.04 para o lançamento recente do Python-3.8 . Minha solução foi adicionar o Deadsnakes PPA que fornece o python3.8-distutilspacote necessário . O python3.8-venvpacote já está no repositório. Graças a esta postagem do blog :

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

Nota: Esta é apenas uma solução temporária. Em um futuro próximo, o python3.8-distutilspacote necessário provavelmente estará disponível no repositório padrão do Ubuntu.

Editar:

Para o Ubuntu 20.04 LTS, o pacote python3-distutils é baseado no Python 3.8. Até o momento, não há pacote distutils do pacote Python 3.8 disponível para Ubuntu 18.04 LTS.

Conforme mencionado em outros comentários neste tópico, distutilspode não ser necessário. Era para o meu caso de uso, mas considere essa solução antes de adicionar PPAs adicionais.


1
sudo apt install python3.8-venvfoi o vencedor para mim. Todas as outras ajudas que pude encontrar me obrigaram a tentar instalar python3-venv.
user1717828

4

Resolvi problemas semelhantes no Ubuntu18 quando cheguei a esta resposta . É semelhante ao que funcionou para @Niko Rikken, aceitar realmente não precisa de novos PPAs e pacote "python3.8-distutils". Eu estava instalando um novo ambiente python3.8 com venv e já tinha "python3-venv" instalado e atualizado, então minha solução foi instalar apenas "python3.8-venv":

% sudo apt-get install python3.8-venv

E isso fez com que essas linhas funcionassem:

% python3.8 -m venv ~/envs/new_env
% source ~/envs/new_env/bin/activate

3

Tentar : python3.* -m venv myvenv -

E não se esqueça de substituir * por sua versão específica de python


2

Eu tive o mesmo problema - o env python tem 2 versões para 2.7 e 3.6.

Tudo que você precisa fazer é:

  1. Instale a versão mais recente do pip instalando instalador pyenv
  2. Certifique-se de seguir as etapas de instalação do pyenv encontradas aqui

Boa sorte!


2

Se sua intenção era obter o python3.8 incl. pip e venv no Ubuntu 18.04:

  • sudo apt install python3.8 python3.8-venv python3-pip # não há pacote python3.8-pip
  • python3.8 -m venv venv
  • source venv/bin/activate
  • python --version # -> python 3.8.0
  • pip --version # -> pip 9.0.1 de /home/user/venv/lib/python3.8/site-packages (python 3.8)

2

Eu me deparei com o mesmo problema e estou procurando uma solução. É sobre o problema:

certifique-se de que opip está desativado no Debian / Ubuntu para o sistema python

E esta é a minha solução:

python3 -m venv myvenv --without-pip --system-site-packages

Observe que um ambiente Python sem pippode não ser tão útil.
ankostis

2

Experimente os seguintes comandos:

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

Esses comandos podem funcionar para você.

Se você receber algum erro como E: Unable to locate package python3-venv Então tente os seguintes comandos:

sudo apt install python3.6-venv

1

Eu tive o mesmo problema para um projeto existente durante a execução python3 -m venv venv. Eu tinha acabado de atualizar minhas versões do Ubuntu e Python. Depois de remover a venvpasta já existente, o problema foi resolvido. (Também tentei a solução UTF-8 .)


1

Meu problema estava relacionado a permissões e propriedade. Eu estava conectado com um usuário diferente como o proprietário do diretório atual, o que levou a este erro. Depois de revisar e corrigir todas as permissões, consegui instalar o venv regularl


Esse era exatamente o meu problema. Quando mudei para o diretório inicial dos usuários atuais, o comando funcionou bem. Deve ser um bug onde assume que o python3-venv não está instalado quando na verdade está encontrando um problema de permissão.
Cosmicnet

0

Todas essas sugestões não me ajudaram.

$ apt list python3 -a
python3/now 3.6.7-1~18.04 amd64 [installed,local]
python3/bionic 3.6.5-3 amd64

Então eu fiz: sudo apt-get install python3/bionic

Agora eu tenho o python 3.6.5 e o apt-list mostrou uma lista melhor: $ apt list python3 -a python3 / bionic 3.6.5-3 amd64

Com sudo apt-get install python3-venv/bioniceu pude instalar o pythno3-venv e tudo funcionou.


Estou usando ubuntu a cerca de 5 anos ativamente mas nunca tinha visto antes aquela sintaxe "python3 / bionic": Ó sua resposta resolveu meu problema obrigado.
kodmanyagha

Ainda bem que funcionou, eu também não conhecia essa sintaxe, simplesmente tentei porque o "apt list" mostrava os pacotes dessa forma ;-) Se essa resposta o ajudou, você pode clicar no botão "para cima".
Stefan

Se você pode usar nomes de pacote não padrão, significa que você tem fontes de pacote não padrão configuradas. apt-cache policy python3/bionicpode ajudá-lo a descobrir de onde vem este pacote. Não é do Ubuntu.
tripleee

0

No meu caso, a execução sudo apt-get install python3.8-venvé bem-sucedida, mas mostra o mesmo erro durante a execução python3 -m venv .venv.

Finalmente, este comando funciona sem alterar o local.

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


0

Isso funcionou para mim ... Em primeiro lugar, eu corri

sudo apt-get update

Então

sudo apt-get install -y python3-venv zip


-1
sudo apt-get update 

Funcionou para mim.

Edit: Eu adoraria saber exatamente qual era o problema, mas não sei. Tentei executar comandos conforme descrito pelo questionador e estava dando erro então atualizei e funcionou. :-D


3
Explique por que sua resposta resolve a questão.
RyanNerd

1
Executar comandos e atualizar a árvore do pacote não constitui uma resposta, explique
Andres Felipe

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.