surepip está desabilitado no Debian / Ubuntu para o sistema python


10

Estou tentando criar um ambiente virtual para o desenvolvimento do meu aplicativo Django. O comando que eu estou 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']

Como você pode ver, estou tentando criar um myvenv, que não pode ser criado devido à falta do python3-venv. Eu já instalei isso, mas o pip de garantia está ausente. Após a pesquisa, parece que o sistema (Ubuntu 16.04) desencoraja o uso do pacote. Alguém poderia me ajudar a solucionar esse problema?


O comando real que está falhando é o /var/www/djangogirls/myvenv/bin/python3 -Im ensurepip ...que talvez falhe por razões totalmente diferentes.
muru

Respostas:


14

Há um relatório de bug relacionado aqui

O componente surepip está ausente / desativado no Ubuntu

A maneira de contornar isso é criar um ambiente virtual sem pip

python3 -m venv myvenv --without-pip

O componente surepip não é chamado e um novo ambiente é criado nesse caso.

No entanto, a falta de pip no ambiente virtual pode ser um problema.

Uma solução é instalar o pacote pip3 do sistema e usar o módulo pip do sistema diretamente no seu ambiente virtual.

O ambiente virtual precisa ter acesso aos pacotes do site do sistema para poder usar o módulo pip do sistema.

  1. instale o pacote do sistema python3 pip

    sudo apt-get install python3-pip
  2. criar ambiente virtual sem pip e com acesso aos pacotes de sites do sistema

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

Você pode usar o módulo pip do sistema para instalar pacotes python em seu ambiente virtual agora.

Em vez de pip install Djangovocê ter que usar explícito

myvenv/bin/python3 -m pip install Django

ou você pode ativar seu ambiente virtual primeiro

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

python3 -m pip --version pode ser útil para ver qual ambiente python é usado.

Com base na solução encontrada aqui , mas não use o proposto python get-pip.pyno ambiente virtual, pois roubará o pipcomando do sistema


O bug do Debian para esta questão está aqui: bugs.debian.org/cgi-bin/bugreport.cgi?bug=901601
nnyPor

1

Anaconda involucrado

Se você estiver usando o Anaconda ou o Conda, esta solução poderá ajudá-lo:

O Conda gerencia o próprio python como um pacote , para que o conda update python seja possível, ao contrário do pip, que gerencia apenas os pacotes do Python. O Conda está disponível no Anaconda e Miniconda (um download fácil de instalar apenas com Python e conda).

muito perturbador para mim, mas bem, mãos para o teclado em uma janela do terminal:

conda update python

Olhe para esta foto o resultado , talvez isso ajude você, tenha um bom dia!

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.