Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Comment ajouter des libs externes à un virtualenv

+3 votes

Avec mon histoire de unoconv je me retrouve à tenter de utiliser unoconv depuis un virtualenv.
En dehors d'un virtualenv ca passe mais là ...
Du coup comment s'y prend on pour rajouter des libs externes au folder lib64 (ou lib) de son virtualenv ou mieux avoir unoconv qui fonctionne aussi dans un virtualenv ?

ps : je n'ai ni venv ni virtualenvwrapper sous la main.

demandé 16-Jan-2015 par foxmask (2,888 points)

bon unoconv est hardcodé ... ca peut pas rentrer dans un virtualenv - il va systématiquement chercher dans /usr/lib/openoffice donc dans le virtualenv quand on le lance il explose parce que les lib openoffice ne sont pas dans le virtualenv

What about:
virtualenv --system-site-packages ton_env? Pour creer un virtualenv pouvant utiliser les paquets installés au niveau systeme? J'ai jamais eu a utiliser ce flag, je sais meme pas si ça t'aidera.

Je l'ai tentée cette option avant de passer mais je l'ai faite de traviole. Je retente ça lundi

Nsukami_ : ça typiquement, tu peux le mettre en réponse, pas en commentaire, puisque c'est une solution potentielle :)

@Sam j'ai posté en commentaire parce que je me suis dit "c'est trop facile pr que ce soit la bonne reponse, il peut pas l'avoir loupée celle là", attendons donc qu'il retente ça lundi :)

Je vois ce que tu veux dire, mais il faut pas hésiter à le mettre en réponse. Le but d'avoir une question et un listing de solutions dessous triées par ordre de probabilité de fonctionnement. Comme ça si quelqu'un arrives après sur la question, il peut trouver la réponse cash.

2 Réponses

+2 votes
 
Meilleure réponse

On est ici dans le cas de deux technos très mal packagées.

D'abord, unoconv.

Je suis allé sur le repo : https://github.com/dagwieers/unoconv/blob/master/unoconv

Le truc fait un seul fichier : https://github.com/dagwieers/unoconv/blob/master/unoconv

Il disent qu'on peut l'installer ainsi :

simply by copying the unoconv python script to your system.

Donc copier le fichier cash dans le dossier site-packages sur ton virtualvenv va marcher.

Par contre, il dépend du package uno, qui est attaché à libre office. On ne peut que l'installer au niveau de l'OS. Par exemple, sous Ubuntu, :

sudo apt-get install libreoffice-script-provider-python

Qui fonctionne pour Python 3.

Donc, pour pouvoir l'utiliser dans un virtualenv, il faut soit créer le virtualenv avec l'option --system-site-packages, soit convertir son environnement virtuel a posteriori. Par exemple avec pew :

pew  toggleglobalsitepackages

Et l'env aura accès aux libs de l'OS :

$ workon test3
Launching subshell in virtual environment. Type 'exit' or 'Ctrl+D' to return.
$ pew  toggleglobalsitepackages
Enabled global site-packages
$ python
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import uno
>>>
répondu 17-Jan-2015 par Sam (4,984 points)
sélectionné 19-Jan-2015 par foxmask

Je teste lundi @work . merci a vous tous !

ca passe nickel avec la creation du virtualenv comme indiqué

virtualenv foobar --system-site-packages

et avec ton test d'import quand on lance python, on est immédiatement fixé !

Merci!

0 votes

D'habitude j'installe Opencv en root et ensuite je copie ses libs dans le virtualenv où j'en ai besoin:

cp /usr/local/lib/python2.7/site-packages/cv2* /home/popeye/.virtualenv/lib/python2.7/site-packages/

il me copie des fichiers cv*.so dans le rep du virtualenv et ça marche. Tu peux peut-être faire de même avec unoconv. (C'est très sale mais si ça marche...)

répondu 16-Jan-2015 par max (892 points)

Le bins avec unoconv c'est que les libs dont il a besoin ne sont pas des libs installees parmi celles de python mais celles du système puisque ce sont celles de OpenOffice.
Je resterai la suggestion nsukami_ que j'avais tente de travers avant qu'il ne m'en parle.

...