2014-08-28 4 views
1

Я пытаюсь переместить свою работу с PySide на PyQt5.Как построить PyQt5 на Ubuntu

Мой проект работает с Python3.4.1, но по умолчанию python3 Ubuntu является Python3.4.0, поэтому мне нужно скомпилировать PyQt5.

Python3.4.1 путь «s является /opt/python3.4.1/bin/python3.4 и он хорошо работает

моя система ubuntu14.04


Во-первых, я загрузить исходный код с официального сайта, PyQt-gpl-5.3.1.tar.gz и sip-4.16.2.tar.gz. Sip был успешно установлен, когда произошла ошибка с получением pyqt.

моя команда:

$/opt/python3.4.1/bin/python3.4 configure.py 
$make 

и Эрро является

g++ -m64 -Wl,-O1 -shared -o libpyqt5qmlplugin.so pluginloader.o moc_pluginloader.o -L/usr/X11R6/lib64 -L/opt/python3.4.1/lib -lpython3.4m -lQt5Qml -L/usr/lib/x86_64-linux-gnu -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread

/usr/bin/ld: /opt/python3.4.1/lib/libpython3.4m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC

/opt/python3.4.1/lib/libpython3.4m.a: error adding symbols: Bad value

collect2: error: ld returned 1 exit status

make 1 : *** [libpyqt5qmlplugin.so] Error 1

ошибка не поднять, когда я использую по умолчанию $python3 configure.py и выглядит очень похоже на ошибку, когда я строю PySide (его фиксируется this). Но я слабо разбираюсь в компиляции, поэтому я не могу исправить pyqt, как в pyside.

Я также пробовал pip install PyQt5 в моем virtualenv, к сожалению, получил тот же отказ, что и this.

Даже успешная сборка (выглядит) с использованием python по умолчанию, при запуске отображаются две ошибки.

  1. Путь установки по умолчанию - это «сайты-пакеты», который вместо «dist-packages» на ubuntu. Так что я должен сам изменить свой ПИТОНПАТ.

  2. , который является наиболее досадная проблема, когда я импортировать его:

    from PyQt5 import QtCore, QtGui

    возникает ошибка:

    Traceback (most recent call last): File "", line 1, in from PyQt5 import QtCore, QtGui RuntimeError: the sip module implements API v11.0 but the PyQt5.QtCore module requires API v11.1

Все источником является последней выпущенной на официальном сайте! Это шутка?


Наконец, я использую apt-get install python3-pyqt5 установить PyQt моему по умолчанию python3.4.0. Теперь он работает хорошо, и я до сих пор не могу найти способ создания PyQt для python3.4.1.

+0

вопросы, возможно, привлекли больший интерес askubuntu, сестра сайт SO, видя, что нет никаких ответов от других здесь. Но поскольку вы уже предоставили и ответили, что, похоже, работает, не забудьте принять его. – Trilarion

+0

@Trilarion Спасибо, я поеду и займусь вопросом. – PaleNeutron

ответ

4

Это действительно тяжелая работа!

/usr/bin/ld: /opt/python3.4.1/lib/libpython3.4m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC

Эта ошибка возникает, потому что компоновщик не смог найти libpythonX.X.so. Когда я построил свой Python3.4.1, я использовал только один вариант --prefix, поэтому у меня нет общей библиотеки lib в моей папке python.

Затем я перестраиваю свой питон с помощью --enable-shared, затем устанавливаю PyQt5 и успешно импортирую PyQt.

Однако я понимаю, что моя версия python - это 3.4.0! Python exec. был связан с Lib системного питона ...

Эта статья мне очень помогает: http://koansys.com/tech/building-python-with-enable-shared-in-non-standard-location

Наконец, я добавляю LDFLAGS= -Wl,-rpath /opt/python3.4.1/lib настроить параметр:

./configure --prefix=/opt/python3.4.1 --enable-shared LDFLAGS= -Wl,-rpath /opt/python3.4.1/lib

, а затем установили PyQt5.

Теперь я могу наслаждаться ~ (≧ ▽ ≦)/~

Смежные вопросы