pyvenv non funziona perché assicurarepip non è disponibile


93

Ho aggiornato da Ubuntu 14.04 a Ubuntu 16.04 pochi giorni fa. Quando provo a creare un ambiente virtuale utilizzando

pyvenv .venv

o

python3 -m venv .venv

C'è un errore:

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

Ho provato a eseguire entrambi

sudo apt-get install python3-venv

e

sudo apt-get install python3.5-venv

ma non ha risolto il mio problema.


Il mio problema è stato risolto sul sistema operativo con informazioni sulla versione: ID distributore: LinuxMint Descrizione: Linux Mint 18.3 Sylvia Release: 18.3
nix

nessuna delle risposte mi ha risolto. ancora bloccato sullo stesso errore
Shoaib Iqbal

Possibile duplicato dell'errore locale
SS Anne

Risposte:


119

Sembra che sia stato un problema locale. Risolto eseguendo:

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

trovato su questo thread Errore locale Python: impostazione locale non supportata


37
È pazzesco ma è vero
user1703761

8
Veramente curioso, ma qualcuno sa qual è il motivo?
Juan Antonio

non ha funzionato per me su OS con informazioni sulla distribuzione: ID distributore: LinuxMint Descrizione: Linux Mint 18.3 Sylvia Release: 18.3
nix

1
Grazie, eseguendo una configurazione docker minima qui. Non l'avrei mai immaginato.
Antti Haapala

1
@JuanAntonio Sembra che Ubuntu (almeno 16.04) sia un bistro non Unicode pronto all'uso , come menzionato in questo numero: tickets.puppetlabs.com/browse/IMAGES-498 Immagino che dovremmo aggiungere le impostazioni locali al bootstrap del nostro server .. .
Andreas Bergström

115

prova a installare python3.6-venv:

sudo apt-get install python3.6-venv

1
Grazie per la soluzione. Ha funzionato su 16.04 (dato che python3.6 era già installato ovviamente). Quello che NON capisco è che: 1. venv dovrebbe precisamente rendere superfluo l'utilizzo di apt-get. Fa parte della libreria standard. 2. perché la versione predefinita di pip che utilizza venv non è l'ultima versione?
Lionel Trebuchon

30
... o sudo apt-get install python3.7-venvse usi python 3.7
Alleo

13
... o sudo apt-get install python3.8-venvse usi python 3.8
cowlinator

3
... o sudo apt-get install python3.9-venvse usi python 3.9 (per il futuro)
Andrey Semakin

12
... o sudo apt-get install python3.10-venvse usi python 3.10 (nel caso in cui sopravviviamo al 2020)
Steven667

45

Una delle altre risposte mi ha risolto l'ultima volta, ma con Python 3.7 dovevo fare:

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

Seguito da

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

funziona per Ubuntu 18.04
iwtu

23

In Windows Linux Subsystem e Ubuntu 18.04, ciò è stato causato dal fatto che non ho eseguito l'aggiornamento di recente.

Ho corso:

sudo apt update
sudo apt upgrade

Poi ha sudo apt install python3-venvfunzionato.

Nota che avevo anche provato in anticipo la soluzione UTF-8 (l'ho resa parte del mio .bashrc), quindi quello avrebbe potuto essere un fattore determinante.


4
Non credo che la soluzione UTF-8 sia importante. Sono anche su WSL Ubuntu 18.04 e sui passaggi sudo apt updatee sudo apt install python3-venvsono stati sufficienti.
Theja

1
Questa è l'unica soluzione che ha funzionato per me! Ho provato a cambiare le
impostazioni

2
questo ha funzionato anche per me, ho provato diverse altre opzioni .. non ha funzionato,
Studente

10

Nel mio caso i passaggi successivi hanno funzionato:

  • Ubuntu 18.04.4 LTS
 $ sudo apt-get install python3-venv python3.7-venv
 $ python3.7 -m venv [your_path_to_virtual_env_here]

9

Nel caso in cui questo aiuti qualcuno su tutta la linea, stavo ricevendo lo stesso errore su Ubuntu 18.04. L'impostazione delle impostazioni locali non ha funzionato e il tentativo di installazione ha python3-venvdato l'errore:

$ 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 sembra che il repository apt avesse due versioni di python:

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

Ho provato ad installare Python3.6.5-3ma apt voleva disinstallare ogni dipendenza. Sono stato in grado di risolvere il problema installando Python3.7 e creando il venv con questo:

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

1
Questo ha funzionato per me. Ho sudo apt install python3.8 python3.8-venvcreato e creato l'ambiente virtuale utilizzando python3.8 -m venv venv_name. Grazie!
Amir A. Shabani

5

Ho riscontrato questo problema su Ubuntu 18.04 per la recente versione di Python-3.8 . La mia soluzione è stata quella di aggiungere il Deadsnakes PPA che fornisce il python3.8-distutilspacchetto richiesto . Il python3.8-venvpacchetto è già nel repository. Grazie a questo post sul 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: questa è solo una soluzione temporanea. Nel prossimo futuro il python3.8-distutilspacchetto richiesto sarà probabilmente disponibile nel repository di Ubuntu predefinito.

Modificare:

Per Ubuntu 20.04 LTS il pacchetto python3-distutils è basato su Python 3.8. Al momento non è disponibile alcun pacchetto distutils del pacchetto Python 3.8 per Ubuntu 18.04 LTS.

Come accennato in altri commenti su questo thread, distutilspotrebbe non essere richiesto. Era per il mio caso d'uso, ma per favore considera questa soluzione prima di aggiungere ulteriori PPA.


1
sudo apt install python3.8-venvè stato il vincitore per me. Tutto l'altro aiuto che ho potuto trovare mi ha fatto provare a installarlo python3-venv.
user1717828

4

Risolti problemi simili su Ubuntu18 quando è arrivata questa risposta . È simile a quello che ha funzionato per @Niko Rikken, accept non ha davvero bisogno di nuovi PPA e pacchetti "python3.8-distutils". Stavo installando un nuovo ambiente python3.8 con venv e avevo già "python3-venv" installato e aggiornato, quindi la mia soluzione era installare solo "python3.8-venv":

% sudo apt-get install python3.8-venv

E questo ha fatto funzionare queste linee:

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

3

Provare : python3.* -m venv myvenv -

E non dimenticare di sostituire * con la tua versione specifica di python


3

Ho dovuto affrontare lo stesso problema e sto cercando una soluzione. Riguarda il problema:

garantirepip è disabilitato in Debian / Ubuntu per il sistema python.

E questa la mia soluzione:

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

2
Nota che un ambiente Python senza pippotrebbe non essere così utile.
ankostis

3

Prova i seguenti comandi:

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

Questi comandi potrebbero funzionare per te.

Se ricevi un errore come E: Unable to locate package python3-venv Allora prova i seguenti comandi:

sudo apt install python3.6-venv

3

Python aggiornato o Python predefinito modificato e venv già installato

il venv installato sul tuo sistema è installato dalla tua precedente versione di python (diciamo python3.6). ecco perché venv non funziona con la versione corrente di Python (diciamo 3.8).

quindi prima controlla la tua versione predefinita di python o python3, (supponiamo che la tua versione corrente sia python3.8).

reinstallare l'ambiente virtuale menzionando la versione corrente di python (3.8) come segue

sudo apt-get install python3.xx-venv        >> replace xx with your current/default python version

se questo ti aiuta a votare, sono nuovo su questa piattaforma.


2

Ho avuto lo stesso problema: python env ha 2 versioni per 2.7 e 3.6.

Tutto quello che devi fare è:

  1. Installa l'ultima versione di pip installando programma di installazione pyenv
  2. Assicurati di seguire i passaggi per l'installazione di pyenv trovati qui

In bocca al lupo!


2

Se la tua intenzione era quella di ottenere python3.8 incl. pip e venv su Ubuntu 18.04:

  • sudo apt install python3.8 python3.8-venv python3-pip # non esiste alcun pacchetto python3.8-pip
  • python3.8 -m venv venv
  • source venv/bin/activate
  • python --version # -> python 3.8.0
  • pip --version # -> pip 9.0.1 da /home/user/venv/lib/python3.8/site-packages (python 3.8)

1

Ho avuto lo stesso problema per un progetto esistente durante l'esecuzione python3 -m venv venv. Avevo appena aggiornato le mie versioni di Ubuntu e Python. Dopo aver rimosso la venvcartella già esistente il problema è stato risolto. (Ho anche provato la soluzione UTF-8 .)


1

Il mio problema era relativo alle autorizzazioni e alla proprietà. Ho effettuato l'accesso con un utente diverso come proprietario della directory corrente, il che ha portato a questo errore. Dopo aver esaminato e corretto tutte le autorizzazioni, sono stato in grado di installare venv regularl


Questo era esattamente il mio problema. Quando sono passato alla directory home degli utenti correnti, il comando è stato eseguito correttamente. Questo deve essere un bug in cui si presume che python3-venv non sia installato quando sta effettivamente riscontrando un problema di autorizzazioni.
Cosmicnet

0

Tutti questi suggerimenti non mi hanno aiutato.

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

Così ho fatto: sudo apt-get install python3/bionic

Ora ho python 3.6.5 e apt-list ha mostrato un elenco migliore: $ apt list python3 -a python3 / bionic 3.6.5-3 amd64

Con sudo apt-get install python3-venv/bionicpotrei installare pythno3-venv e tutto ha funzionato.


Uso Ubuntu da circa 5 anni attivamente ma non ho mai visto prima quella sintassi "python3 / bionic": O la tua risposta ha risolto il mio problema grazie.
kodmanyagha

Sono contento che funzioni, non conoscevo nemmeno quella sintassi, ho semplicemente provato perché "apt list" mostrava i pacchetti in quel modo ;-) Se quella risposta ti ha aiutato, potresti premere il pulsante "su".
Stefan il

Se puoi usare nomi di pacchetti non standard, significa che hai configurato sorgenti di pacchetti non standard. apt-cache policy python3/bionicpotrebbe aiutarti a capire da dove proviene questo pacchetto. Non è di Ubuntu.
tripleee

0

Nel mio caso, l'esecuzione sudo apt-get install python3.8-venvriesce ma mostra lo stesso errore durante l'esecuzione python3 -m venv .venv.

Infine, questo comando funziona senza cambiare locale.

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


0

Questo ha funzionato per me ... In primo luogo, ho corso

sudo apt-get update

Poi

sudo apt-get install -y python3-venv zip


0

Ecco la mia risposta per Ubuntu 14.04. Sono stato in grado di far funzionare venv e pip con varie versioni di Python. Dettagli:

  • 3.4: Ubuntu 14.04 ha Python 3.4 (come pacchetto python3.4 ecc.). Funziona:

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

    Se python3.4-venvviene rimosso dal apt-get installcomando precedente, python3.4 -m venvviene visualizzato lo stesso messaggio di errore della domanda. Tuttavia, il messaggio di errore menziona apt-get install python3-venvper risolverlo, ma non funziona, non esiste un tale pacchetto. (Il nome del pacchetto corretto èpython3.4-venv .)

    Si noti che Python 3.4 è abbastanza vecchio e alcuni pacchetti Python disponibili in PyPI (tramite pip) non funzionano con esso.

  • 3.5: Può essere installato dal repository deadsnakes. Funziona:

    $ 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: Idem, può essere installato dal repository deadsnakes. Funziona:

    $ 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: Non funziona, perché pip installfallisce con import _ssl, e python3.7 nel repo deadsnakes non ha quel modulo, perché Ubuntu 14.04 viene fornito con la vecchia versione di OpenSSL che Python 3.7 non supporta. Vedi maggiori dettagli in questo bug .

  • 3.8--: Nessun pacchetto Ubuntu 14.04 per queste versioni di Python nei repository Ubuntu o deadsnakes.


-1
sudo apt-get update 

Ha funzionato per me.

Modifica: mi piacerebbe sapere quale fosse esattamente il problema, ma non lo so. Ho provato a eseguire i comandi come descritto dall'interrogante e dava un errore, quindi ho aggiornato e ha funzionato. MrGreen


5
Per favore, spiega perché la tua risposta risolve la domanda.
RyanNerd

2
L'esecuzione dei comandi e l'aggiornamento dell'albero dei pacchetti non costituiscono una risposta, si prega di elaborare
Andres Felipe

-2

Niente di tutto questo ha funzionato per me. Sto usando Ubuntu 18.04. Ho appena disinstallato completamente anaconda e tutto ha funzionato. Inserito solo nel caso in cui aiuti qualcuno. Per i comandi da disinstallare: 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

1
export PATH="..."È molto improbabile che il tuo comando sia necessario per rimuovere anaconda.
punti
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.