web-dev-qa-db-fra.com

Comment configurer PyQt4 pour Python 3 dans Ubuntu?

Cette question a été initialement posée dans askubuntu.com mais n'a pas retenu l'attention, donc je pense que c'est peut-être un meilleur endroit à poser.

J'ai installé PyQt4 avec synaptique.

J'utilise Python3, je dois donc configurer le chemin d'accès à PyQt4 dans Eclipse, mais il semble que Synaptic n'ait installé PyQt4 que pour python 2 car je n'ai trouvé que des fichiers et des dossiers relatifs sous python 2.6 et 2.7.

Alors, comment puis-je faire fonctionner PyQt4 avec Python 3 et Eclipse?

Merci.

[~ # ~] mise à jour [~ # ~]

J'ai essayé de le configurer après ce post: http://ubuntuforums.org/showthread.php?p=10914908#post10914908

Mais après avoir suivi toutes les instructions sans erreur, je reçois une erreur en exécutant ce code dans python 3.2:

>>> import PyQt4

Le message d'erreur est:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named PyQt4

Mais la chose étrange est que le même code ne génère AUCUNE erreur dans python 2.7 (j'ai à la fois 2.7 et 3.2 installés sur ma machine)

27
Derrick Zhang

Installez les packages nécessaires à la compilation (je ne suis pas sûr que tous soient nécessaires):

Sudo apt install build-essential python3-dev libqt4-dev

Téléchargez les sources de la dernière SIP - sip-4.12.4.tar.gz (source Linux, UNIX, MacOS/X).

Déballez-les et entrez dans le répertoire:

vic@wic:~/Desktop/sip-4.12.4$ python3 configure.py 
This is SIP 4.12.4 for Python 3.2 on linux2.
The SIP code generator will be installed in /usr/bin.
...
Creating sip module Makefile...

vic@wic:~/Desktop/sip-4.12.4$ make
make[1]: Entering directory `/home/vic/Desktop/sip-4.12.4/sipgen'
...
make[1]: Leaving directory `/home/vic/Desktop/sip-4.12.4/siplib'

vic@wic:~/Desktop/sip-4.12.4$ Sudo make install
make[1]: Entering directory `/home/vic/Desktop/sip-4.12.4/sipgen'
...
cp -f /home/vic/Desktop/sip-4.12.4/sipdistutils.py /usr/lib/python3/dist-packages/sipdistutils.py

vic@wic:~/Desktop/sip-4.12.4$

Téléchargez les sources de la dernière version de PyQt - PyQt-x11-gpl-4.8.5.tar.gz (Linux, source UNIX), et installez-la:

vic@wic:~/Desktop/PyQt-x11-gpl-4.8.5$ python3 configure.py 
Determining the layout of your Qt installation...
This is the GPL version of PyQt 4.8.5 (licensed under the GNU General Public License) for Python 3.2 on linux2.

Type '2' to view the GPL v2 license.
Type '3' to view the GPL v3 license.
Type 'yes' to accept the terms of the license.
Type 'no' to decline the terms of the license.
Do you accept the terms of the license? yes
Found the license file pyqt-gpl.sip.
Checking to see if the QtGui module should be built...
...
Checking to see if the dbus support module should be built...
The Python dbus module doesn't seem to be installed.
Qt v4.7.2 free edition is being used.
SIP 4.12.4 is being used.
The Qt header files are in /usr/include/qt4.
...
Creating pyqtconfig.py...

vic@wic:~/Desktop/PyQt-x11-gpl-4.8.5$ make
make[1]: Entering directory `/home/vic/Desktop/PyQt-x11-gpl-4.8.5/qpy'
...
make[1]: Leaving directory `/home/vic/Desktop/PyQt-x11-gpl-4.8.5/designer'

vic@wic:~/Desktop/PyQt-x11-gpl-4.8.5$ Sudo make install
make[1]: Entering directory `/home/vic/Desktop/PyQt-x11-gpl-4.8.5/qpy'
...
cp -f PyQt4.api /usr/share/qt4/qsci/api/python/PyQt4.api

Notez que je lance python3 au lieu de python.

30
warvariuc

Vous devriez pouvoir installer la version python 3 de PyQt4 dans ubuntu. Ouvrez un terminal et tapez:

Sudo apt-get install python3-pyqt4

De cette façon, vous n'avez pas à compiler Qt4 à partir de la source. J'ai également testé cela et pyqt4 fonctionne avec python3.

Source: Une recherche rapide dans les référentiels ubuntu.

64
user133987

Il semble que ubuntu ne dispose que de packages pyqt4 pour python2, vous devrez donc compiler un pyqt4 distinct pour python3.

Vous pouvez vérifier ce que vous avez déjà installé en consultant le site-packages répertoire pour chaque python. Pour localiser ces répertoires, exécutez:

python2.7 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
python3.2 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

Si pyqt est installé correctement, il devrait y avoir un PyQt4 répertoire sous site-packages contenant quelques dizaines *.so des dossiers.

Vraisemblablement, il n'y aura rien pour python3.2, c'est pourquoi vous ne pouvez pas importer pyqt.

Pour installer pyqt pour python3.2, suivez ces instructions . Veuillez noter qu'il est très important de configurer la build en utilisant le bon python, par exemple:

/usr/bin/python3.2 configure.py
2
ekhumoro