surepip è disabilitato in Debian / Ubuntu per il sistema Python


10

Sto cercando di creare un ambiente virtuale per lo sviluppo della mia applicazione Django. Il commando che sto usando:

vagrant@vagrant:/var/www/djangogirls$ python3 -m venv myvenv
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: ['/var/www/djangogirls/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']


vagrant@vagrant:/var/www/djangogirls$ sudo apt-get install python3-venv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-venv is already the newest version (3.5.1-3).
The following packages were automatically installed and are no longer required:
  javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore python-pbr python-pkg-resources
  python-six python-stevedore python3-virtualenv virtualenv virtualenv-clone
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 108 not upgraded.

vagrant@vagrant:/var/www/djangogirls$ python3 -m ensurepip
ensurepip is disabled in Debian/Ubuntu for the system python.

Python modules for the system python are usually handled by dpkg and apt-get.

    apt-get install python-<module name>

Install the python-pip package to use pip itself.  Using pip together
with the system python might have unexpected results for any system installed
module, so use it on your own risk, or make sure to only use it in virtual
environments.


vagrant@vagrant:/var/www/djangogirls$ rm -r myvenv/ 

vagrant@vagrant:/var/www/djangogirls$ python3 -m venv myvenv
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: ['/var/www/djangogirls/myvenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']

Come puoi vedere, sto cercando di creare un myvenv, che non può essere creato a causa della mancanza di python3-venv. L'ho già installato, ma manca il pip assicurato. Dopo la ricerca sembra che il sistema (Ubuntu 16.04) scoraggi l'utilizzo del pacchetto. Qualcuno potrebbe aiutarmi a risolvere questo problema?


Il vero comando che sta fallendo è /var/www/djangogirls/myvenv/bin/python3 -Im ensurepip ..., che forse fallisce per ragioni completamente diverse.
muru,

Risposte:


14

C'è una segnalazione di bug correlata qui

garantire che il componentepip sia mancante / disabilitato su Ubuntu

Il modo per aggirarlo è creare un ambiente virtuale senza pip

python3 -m venv myvenv --without-pip

assicurarsi che il componente non venga chiamato e in questo caso viene creato un nuovo ambiente.

Tuttavia, il pip mancante nell'ambiente virtuale può essere un problema.

Una soluzione è installare il pacchetto pip3 di sistema e utilizzare direttamente il modulo pip di sistema all'interno dell'ambiente virtuale.

L'ambiente virtuale deve avere accesso ai pacchetti del sito di sistema per poter utilizzare il modulo pip di sistema.

  1. installa il pacchetto pip python3 di sistema

    sudo apt-get install python3-pip
  2. creare un ambiente virtuale senza pip e con accesso ai pacchetti del sito di sistema

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

Ora puoi usare il modulo pip di sistema per installare i pacchetti python nel tuo ambiente virtuale.

Invece di pip install Djangote devi usare esplicito

myvenv/bin/python3 -m pip install Django

oppure puoi prima attivare il tuo ambiente virtuale

source myvenv/bin/activate
python3 -m pip install Django

python3 -m pip --version può tornare utile per vedere quale ambiente Python viene utilizzato.

Basato sulla soluzione trovata qui , ma non usare la proposta python get-pip.pyin ambiente virtuale, perché ruberà il pipcomando di sistema


Il bug Debian per questo problema è qui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=901601
nnyby,

1

Anaconda coinvolta

Se stai usando Anaconda o Conda questa soluzione può aiutarti:

Conda gestisce python stesso come pacchetto , quindi è possibile aggiornare conda python, al contrario di pip, che gestisce solo i pacchetti Python. Conda è disponibile in Anaconda e Miniconda (un download facile da installare con solo Python e conda).

molto inquietante per me ma bene, le mani alla tastiera in una finestra terminale:

conda update python

Guarda questa foto il risultato , forse questo ti aiuta, buona giornata!

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.