Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/12/2014, à 20:51

Mangiafoco

[résolu]installation de ses propres bibliothèques avec PIP(python)

Bonjour.
Je voudrais installer un ensemble de bibliothèques *.so (dont QtCore.so et QtGui.so) contenus dans un répertoire PyQt4 dans un environnement virtualenv de pyenv. On ne peut pas les installer directement par:

$ pip install PyQt4

... car les sources du projet ne sont pas disponibles depuis pypi (bien que le paquet apparaisse depuis la commande $ pip search PyQt4).


J'ai copié le répertoire PyQt4 dans ~/.pyenv/versions/virtualenv2.6.9_for_anki/lib/python2.6/site-packages/, comme conseillé ici, mais les bibliothèques ne sont pas reconnues.

En effet quand j'exécute le fichier de test test.py dont le code est:

import os, sys
from sqlalchemy import Column
from PyQt4 import QtCore, QtGui

... depuis mon environnement virtualenv2.6.9_for_anki, le module PyQt4 n'est pas trouvé:

xxx@ubuntu:~/Anki/git$ ~/.pyenv/versions/virtualenv2.6.9_for_anki/bin/python test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    from PyQt4 import QtCore, QtGui
ImportError: No module named PyQt4

La commande:

$ pyenv rehash

... exécutée après mon copier-coller de PyQt4/ n'a rien changé au problème.


Faut-il que je transforme le répertoire PyQt4 en paquet PKG installable à partir de PIP? Je ne sais pas comment faire. Y a-t-il une méthode plus rapide?

Distribution actuelle: Trusty.

Dernière modification par Mangiafoco (Le 31/12/2014, à 20:33)

Hors ligne

#2 Le 31/12/2014, à 13:14

Mangiafoco

Re : [résolu]installation de ses propres bibliothèques avec PIP(python)

Un chemin du type:

~/.pyenv/versions/virtualenv2.7.0/lib/python2.7/site-packages/PyQt4

... est valable pour une version 2.7 de python.


Le problème est que la version de python que je dois utiliser est une 2.6 et que les chemins ont changé entre la 2.6 et la 2.7. En 2.6 il y a des histoires de dossier pyshared (...lib/pyshared/python2.6/PyQt4).


~/.pyenv/versions/virtualenv2.6.9/lib/pyshared/python2.6/PyQt4

... ne permet pas l'importation de bibliothèques Qt4 lors de l'exécution de scripts python.

Je vais peut-être devoir me passer de pyenv et me contenter de pip et virtualenv.

Je patauge.

Hors ligne

#3 Le 31/12/2014, à 17:24

Mangiafoco

Re : [résolu]installation de ses propres bibliothèques avec PIP(python)

Je progresse tout doucement.

Je résume ma démarche. Pour finaliser mon environnement virtuel python 2.6 sous Ubuntu Trusty, j'ai besoin d'y installer PyQt4.
Comme PIP ne permet pas une installation simple de PyQt4 via:

~$ ~/.pyenv/versions/virtualenv2.6.9/bin/pip install PyQt4

... je dois le faire manuellement.

La première solution est de récupérer le paquet python-qt4_4.7.2-0ubuntu1_amd64.deb, compilé pour la branche 2.6 de python, et d'en extraire un répertoire PyQt4 à placer dans:

~/.pyenv/versions/virtualenv2.6.9/lib/pyshared/python2.6/

Idem pour SIP via python-sip.

Voilà le contenu du PyQt4/ (bricolé à partir de  python-qt4*.deb) :

xxx@ubuntu:~/.pyenv/versions/virtualenv2.6.9/lib/python2.6/site-packages/PyQt4$ ls -1
__init__.py
__init__.pyc
pyqtconfig.py
QtAssistant.so
QtCore.so
QtDesigner.so
QtGui.so
QtHelp.so
QtNetwork.so
QtScript.so
QtScriptTools.so
Qt.so
QtSvg.so
QtTest.so
QtWebKit.so
QtXmlPatterns.so
QtXml.so
uic/

Le fichier __init__.py n'était pas dans le paquet python-qt4_4.7.2-0ubuntu1_amd64.deb. Je l'ai créé vide... comme celui du paquet python-qt4 d'Ubuntu Trusty. Il a l'air indispensable à la reconnaissance du module PyQt4 par pyenv-virtualenv.

Cette fois mes bibliothèques Qt*.so sont trouvées, mais je ne peux pas exécuter mon fichier de test qui se résume à from PyQt4 import QtCore, QtGui:

xxx@ubuntu:~$ ~/.pyenv/versions/virtualenv2.6.9_for_anki2/bin/python /home/romain/Anki/git/test.py
Traceback (most recent call last):
  File "/home/romain/Anki/git/test.py", line 3, in <module>
    from PyQt4 import QtCore, QtGui
ImportError: /home/romain/.pyenv/versions/virtualenv2.6.9_for_anki2/lib/python2.6/site-packages/PyQt4/QtCore.so: undefined symbol: PyUnicodeUCS4_AsLatin1String

L'erreur du symbole PyUnicodeUCS4_AsLatin1String me fait penser à une mauvaise option de compilation de PyQt4.

Il faudrait peut-être que je recompile PyQt4 ainsi que SIP avec le paramètre PyUnicodeUCS4_AsLatin1String. Ca serait ma deuxième solution. Mais je ne trouve pas les sources PyQt4 pour la branche 2.6 de python.

Hors ligne

#4 Le 31/12/2014, à 20:31

Mangiafoco

Re : [résolu]installation de ses propres bibliothèques avec PIP(python)

Ca a l'air de marcher.

J'ai d'abord installé quelques paquets de développement:

$ sudo aptitude install python2.7-dev python2.6-dev libxext-dev python-qt4 qt4-dev-tools build-essential cmake qt4-qmake qt-sdk python-dev python-sip-dev sip-dev

J'ai ensuite récupéré les sources des paquets python-sip_4.10.1-0ubuntu1_amd64.deb (sip4-qt3_4.10.1.orig.tar.gz) et python-qt4_4.7.2-0ubuntu1_amd64.deb (python-qt4_4.7.2.orig.tar.gz) depuis le site http://packages.ubuntu.com/. Ce sont des sources d'Ubuntu Lucid compatibles avec python 2.6. Il n'y a plus de sources aussi anciennes sur riverbankcomputing.com ou sourceforge.net.

Enfin j'ai installé sip puis pyqt4 (l'ordre a son importance) dans mon environnement virtuel sans option spéciale pour les locales (Unicode ou Latin):

cd /home/xxx/MonProjet/lucid/sip-4.10.1/
~/.pyenv/versions/virtualenv2.6.9/bin/python configure.py 
make
make install
pyenv rehash
cd ../PyQt-x11-gpl-4.7.2/
~/.pyenv/versions/virtualenv2.6.9/bin/python configure.py --qmake /usr/bin/qmake-qt4
make
make install
pyenv rehash

Puis le test final:

~/.pyenv/versions/virtualenv2.6.9/bin/python ~/Anki/git/test.py

Le terminal ne broche pas quand python arrive à la ligne "from PyQt4 import QtCore, QtGui". L'importation a réussi.

Hors ligne