Ubuntu 11.04; Python3 + PyQt4

Fórumok

Ubuntu 11.04-hez létezik repository-ból telepíthető PyQt4 Python3-ra?
Mit kellene keresnem.
A sima python-qt4 csomag a Python2.x-re telepíti a PyQt4-et.
python3-qt4 csomagot meg nem találok.

Tudom letöltöm a forrást és telepítem magamnak. De akkor azt nem lehet "apt-get update/upgrade"-el frissíteni. Semmit nem akarok "kézzel" telepíteni, ha nem elkerülhetetlen.

Hozzászólások

Szerintem még nem készültek el a Python3-as támogatással.
Én PySide-dal ismerkedtem, annak roadmap oldalán azt írták, hogy a portolás folyamatban.

És gondolom azért hasonló cipőben jár a két projekt.

szerk: http://www.pyside.org/roadmap/

Nem ez a gond. Ha jól emlékszem, a PyQt a 3rd party modulok között élen járt a Python3 támogatással, már a Python3 megjelenése után nem sokkal volt hozzá PyQt is. Inkább az lehet a gond vele, hogy csak GPL vagy commercial licenc alatt használható, azaz vagy a programod is GPL alatt adod ki, vagy fizetned kell a Riverbank Computing Ltd-nek. Tehát LGPL változat asszem nincs.

Emellett a mai napig a legjobb és legteljesebb Qt támogatást a PyQt biztosítja. A Nokia sem akart saját bindig-ot fejleszteni eredetileg, mert dupla munka és évekig tart normális módon megcsinálni, ezért meg akartak egyezni a Riverbankkel, hogy az övéket használhassák. Ez licenc okok miatt nem sikerült, ekkor indította el a Nokia jobb híján a saját fejlesztést PySide néven.

A Qt-t használva is írhatsz zárt kódú programot. Csak ha magát a Qt-t módosítod, akkor annak a kódját is közzé kell tenni.
De itt nem erről van szó. Pythonban eleve nyílt a kód. Tudom lehet a fordítani a kódot, meg a py2exe-vel is bűvészkedni.
Nem nagyon mélyedtem még el a Pythonban, de most szeretnék. Eddig Python 2-vel és Tkinterrel szórakoztam. De szeretnék komolyabb kinézetű programot is készíteni és ehhez a PyQt4 szerintem tökéletes lenne. De mivel ez már a Python3-at is támogatja, és feltehetőleg 1-2 éven belül az lesz az alap Python rendszer, így jobb lenne a Python3 PyQt4 párossal folytatni az ismerkedést.
Sajnos csak Windowson sikerült együtt telepítenem. Én viszont szívesebben használnám Ubuntun.

--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

Ez esetben nem lehet jarhato ut az, hogy a python2.6.x/dist-packages-bol atlinkeled a python3.0.x/dist-packages-be a libet?
Nem tudom mennyire eszi meg a dolgot a python, de igy frissulne csomagkezelovel.

Ha ez nem mukodik, akkor meg irsz egy szkriptet, ami szinkronizalja a ket mappat, ha a pyqt egy-egy fajla megvaltozik.:)

Vagy ha a binding miatt tenyleg kell plusz munka, akkor berakod azt is a szkriptbe.

De tenyleg kene csomagban lennie python3-qt4-nek, ha mukodik rendesen..

A lehetőségeid amíg elkészül a Debian/Ubuntu python3-qt4 deb (mert még nincs):

1. fordítasz magadnak
2. telepítesz egy olyan disztribet, amiben már van (Arch, Fedora, Uhu, stb.)
3. használod Windowson
4. használod a Python2-es csomagokat

Pyqt szempontból mindegy, hogy a 2-es vagy 3-as Pythont használod, ha az újabb API 2-t állítod be.
(A Pyside eleve csak ezt támogatja.)

Amúgy szomorú, hogy mennyit tökölnek ezen a csomagon a karbantartók :(

Nem a Qt lincencéről beszéltem, hanem a PyQt-éről. A PyQt egy önálló szoftver, amely független a Python-tól és a Qt-től is, saját licenc-szel. Egy licenc pedig nem csak arról szól, hogy fizikailag láthatod-e a forráskódot, hanem arról is, hogy milyen módon használhatod fel a saját programodban.

Valóban írhatsz zárt forráskódú szoftvert Qt-vel, de azért, mert LGPL licenc alá helyezték pár éve. A PyQt nem ilyen, itt olvashatsz róla. Kiemelném a következő két mondatot:

PyQt, unlike Qt, is not available under the LGPL.

If you are unable to distribute your code under the terms of the GPL then you must purchase a commercial license.

Tehát vagy GPL-es lesz a te programod is, vagy fáradj a kasszához. :)

Ha mégis kedved támad fordítgatni:

http://www.python.org/download/releases/
A legújabb Python-t letöltöd és felteszed.(3.2.1-gyel néztem és működött)

Felteszed a SIP-et.
Itt lesz egy configure.py fájl amit python3-mal fordíts.
http://www.riverbankcomputing.com/software/sip/download

Ezután jöhet a PyQt4
http://www.riverbankcomputing.co.uk/software/pyqt/download
Itt is python3-mal a configure.py fájlt.

Úgy emlékszem, hogy "libxext-dev" csomag is kellett hozzá.

Ha kell segítség szólj!

I am the god of hellfire, and I bring you...

Köszönöm szépen a részletes választ.
Közben"koncepciót" váltottam. :-)
PySide egyelőre a 3-as Pythonhoz nincs, ezért maradok a Python 2.7.x-nél és PySide-ot vagy PyQt4-et használok, ebben a sorrendben, attól függően, hogy mi van telepítve. A Python kódban előbb a pyside-ból importálom a szükséges modulokat és try - except-tel kezelem a kivételt, sikertelenség esetében pedig a PyQt4-ből próbálom a modulokat importálni.
Hosszú út áll előttem mire beledolgozom magam.


try:
    from PySide.QtCore import *
    from PySide.QtGui import *
except ImportError:
    try:
        from PyQt4 import *
        from PyQt4.QtCore import *
        from PyQt4.QtGui import *
    except ImportError:
        print("Nincs sem PySide, sem PyQt4 telepítve! \n")
        raw_input()
        sys.exit(0)

--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox

A new style signal, slot, property neveinek inkompatibilitása miatt inkább így javaslom (az import * használata egyébként sem szép):

try:
    from PySide import QtCore
    from PySide import QtGui
    from PySide.QtCore import Property as pyqtProperty
    from PySide.QtCore import Signal as pyqtSignal
    from PySide.QtCore import Slot as pyqtSlot
except ImportError:
    import sip
    sip.setapi('QDate', 2)
    sip.setapi('QString', 2)
    sip.setapi('QVariant', 2)

    from PyQt4 import QtCore
    from PyQt4 import QtGui
    from PyQt4.QtCore import pyqtProperty
    from PyQt4.QtCore import pyqtSignal
    from PyQt4.QtCore import pyqtSlot

szerk: nem tudom hogy kell megőriztetni az indentálást :(

Köszönöm ezt nagyon jó, hogy leírtad.
Én még egy ilyen mintát találtam:


try:
    from PyQt4.QtCore import QSocketNotifier, QObject, SIGNAL, QTimer, QCoreApplication
    from PyQt4.QtCore import QEventLoop
except ImportError:
    from PySide.QtCore import QSocketNotifier, QObject, SIGNAL, QTimer, QCoreApplication
    from PySide.QtCore import QEventLoop

Egyelőre tanuló fázisban vagyok és kódokból is próbálok tanulni.

Ha "code" "/code" közé teszed (csak idézőjel helyett szögletes zárójelben), akkor megőrzi a formázást.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; Dropbox