web-dev-qa-db-fra.com

Comment installer python paquets avec virtualenv sans les installer globalement?

J'ai installé virtualenv avec _Sudo apt-get install virtualenv_. Cela signifie dans ce tutoriel que vous devez utiliser votre propre commande pip ou _env/bin/_ de votre dossier _pip3_ pour installer des modules dans l'environnement virtuel, et c'est indique explicitement que vous n'utilisez pas Sudo pour le faire.

Malheureusement, cela ne fonctionne pas pour moi, je reçois un PermissionError lorsque j'essaie de le faire. Mais utiliser Sudo avant _pip3_ installera le module globalement, je ne tirerai donc aucun avantage de la présence d’un environnement virtuel.

Par exemple. quand je suis dans mon dossier env/bin /, je lance _pip3 install pytest_:

_Collecting pytest
  Downloading pytest-3.0.7-py2.py3-none-any.whl (172kB)
    100% |████████████████████████████████| 174kB 1.2MB/s 
Collecting py>=1.4.29 (from pytest)
  Downloading py-1.4.33-py2.py3-none-any.whl (83kB)
    100% |████████████████████████████████| 92kB 2.1MB/s 
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from pytest)
Installing collected packages: py, pytest
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/local/lib/python3.5/dist-packages/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/usr/local/lib/python3.5/dist-packages/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/usr/local/lib/python3.5/dist-packages/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/local/lib/python3.5/dist-packages/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/usr/local/lib/python3.5/dist-packages/pip/wheel.py", line 345, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/local/lib/python3.5/dist-packages/pip/wheel.py", line 316, in clobber
    ensure_dir(destdir)
  File "/usr/local/lib/python3.5/dist-packages/pip/utils/__init__.py", line 83, in ensure_dir
    os.makedirs(path)
  File "/usr/lib/python3.5/os.py", line 241, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/usr/local/lib/python3.5/dist-packages/py-1.4.33.dist-info'
_

Comment commencer à utiliser virtualenv sur Ubuntu 16.04 de manière moins pénible?

1
Drunken Master

Après avoir créé l'environnement virtuel, vous devez l'activer:

$ virtualenv myenv
$ source myenv/bin/activate
(myenv) $ pip install pytest

ou pour Python 3:

$ virtualenv -p `which python3` myenv
$ source myenv/bin/activate
(myenv) $ pip3 install pytest

Lorsque vous avez fini d'utiliser l'environnement, vous pouvez le désactiver de la manière suivante:

$ deactivate
2
MiniQuark