web-dev-qa-db-fra.com

Comment puis-je installer apt-get sur mon virtualenv?

C'est possible, bien sûr.

Par exemple, je peux télécharger python-dbus comme ceci: $ Sudo apt-get download python-dbus

Mais que dois-je faire ensuite, avec ce paquet .deb dans mon virtualenv actuel?

Si vous avez vraiment besoin de le faire de cette façon, vous pouvez simplement copier les fichiers installés globalement directement dans votre virtualenv. Par exemple, je ne pouvais pas utiliser pycurl car les bibliothèques requises n’étaient pas installées, mais apt-get install python-pycurl l’a fait. Alors j'ai fait ce qui suit:

Sudo apt-get install python-pycurl
cp /usr/lib/python2.7/dist-packages/pycurl* ~/.virtualenvs/myenv/lib/python2.7/site-packages/

L'installation a indiqué qu'il l'ajoutait à /usr/lib/python2.7. J'ai donc cherché dans ce répertoire un paquet-site ou un paquet-dist avec pycurl, après avoir examiné les fichiers, je les ai copiés dans mon virtualenv. Vous devez également copier tous les exécutables de bin dans le répertoire bin de votre virtualenv.

En outre, exécuter un pip install -r requirements.txt a trouvé avec succès pycurl et l'a simplement ignoré comme si je l'avais installé via pip.

22
MrColes

Pourquoi voudriez-vous faire cela? Le but est d'éviter de faire des choses comme ça ...

virtualenv whatever
cd whatever
bin/pip install dbus-python

Vous pouvez également choisir de spécifier --no-site-packages à virtualenv pour le garder très isolé.

5
Jon Clements

Commencez par installer les bibliothèques de développement dbus (vous aurez peut-être besoin d’autres bibliothèques de développement, mais c’est tout ce dont j'avais besoin).

Sudo apt-get install libdbus-1-dev libdbus-glib-1-dev

Ensuite, avec votre virtualenv activé, exécutez ce qui suit. Ça va échouer mais ça va.

pip install dbus-python

Enfin, allez dans le répertoire de construction de votre virtualenv et installez-le de manière non-Pythonic.

cd $VIRTUAL_ENV/build/dbus-python
chmod +x configure
./configure --prefix=$VIRTUAL_ENV
make
make install
3
SmileyChris

Une autre solution consiste à installer globalement, puis à permettre à virtualenv de le voir. Par exemple, supposons que nous voulions installer matplotlib pour Python 3:

  1. Sudo apt update # Mise à jour en premier
  2. Sudo apt installer python3-matplotlib # Installer globalement
  3. Sudo pip3 install -U virtualenv # Installer virtualenv pour Python 3 à l’aide de pip3
  4. virtualenv --system-site-packages -p python3 ./venv #l'option system-site-packages permet à venv d'afficher tous les packages globaux, y compris matplotlib.
  5. source ./venv/bin/activate #activate the venv pour utiliser matplotlib dans virtualenv
  6. désactive # ne quitte pas tant que tu n'as pas fini d'utiliser virtualenv
0
Joshua Kan