Модуль shiboken python PySide не найден

PySide успешно установлен и отлично работает, но я не могу найти способ импортировать модуль shiboken. Теперь я нашел обсуждение запроса функции для предоставления функций shiboken через модуль python (http://bugs.pyside.org/show_bug.cgi?id=902), но проблема решена. Это было реализовано в январе 2012 года, если я правильно понял. Хотя после установки PySide 1.1.1 при попытке:

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

Я получаю исключение ImportError. Как я могу установить модуль shiboken python?


person andrean    schedule 06.09.2012    source источник


Ответы (3)


Похоже, кто-то забыл обновить cmake: bugs-PYSIDE-55.

Однако я только что скомпилировал shiboken-1.1.2, и проблема, кажется, исправлена.

person ekhumoro    schedule 06.09.2012
comment
Спасибо за ответ, значит ли это, что модуль shiboken python никогда не устанавливается для чистой установки PySide, и мне нужно скомпилировать его вручную? - person andrean; 06.09.2012
comment
@андреан. На какой платформе вы работаете и как обычно устанавливаете PySide? - person ekhumoro; 06.09.2012
comment
Я использую Ubuntu и установил PySide с pip. - person andrean; 06.09.2012
comment
@андреан. Вы можете попробовать бинарные файлы Ubuntu с сайта qt. Похоже, доступны последние пакеты, включая shiboken. - person ekhumoro; 06.09.2012
comment
Я установил PySide с помощью pip, потому что использовал его в virtualenv, но затем я попробую общесистемную установку с бинарными пакетами. спасибо за информацию, надеюсь получится. - person andrean; 06.09.2012
comment
я только что установил PySide версии 1.1.2 на платформу Windows 7 x86, и проблема, похоже, существует и в новой сборке... - person ; 05.01.2013
comment
Я сообщил об ошибке в пакете дистрибутива Ubuntu ( bugs.launchpad.net/ ubuntu/+source/pyside/+bug/1600369 ), надеюсь, один из мастеров упаковки исправит это. - person Compholio; 09.07.2016

Я считаю, что в идеальных обстоятельствах ответ ekhumoro абсолютно правильный, к сожалению, мне не повезло, и бинарные пакеты по-прежнему не позволяли использовать модуль shiboken python. Мне пришлось скомпилировать его вручную, но эта часть тоже оказалась сложной, поскольку она не работала с инструкциями по умолчанию, найденными на их домашней странице, вероятно, потому, что я использую Ubuntu 12.04, или я не знаю, почему еще. Поскольку целью было использование внутри virtualenv, я следовал этим инструкциям:

export PYSIDESANDBOXPATH=/path/to/my/virtualenv
export PATH=$PYSIDESANDBOXPATH/bin:$PATH
export PYTHONPATH=$PYSIDESANDBOXPATH/lib/python2.6/site-packages:$PYTHONPATH
export LD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$PYSIDESANDBOXPATH/lib/pkgconfig:$PKG_CONFIG_PATH

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$PYSIDESANDBOXPATH -DCMAKE_BUILD_TYPE=Debug -DENABLE_ICECC=0'
make
make install
sudo ldconfig

Первая проблема здесь заключалась в том, что после того, как он был скомпилирован, и началась установка, и он хотел установить модуль shiboken python, произошло это:

-- Installing: .../lib/python2.7/site-packages/shiboken.so
-- Removed runtime path from .../lib/python2.7/site-packages/shiboken.so

Затем я нашел где-то, что я должен добавить этот параметр в cmake:

-DCMAKE_SKIP_RPATH:BOOL=YES

Теперь установка прошла успешно, но когда я попытался импортировать шибокен в python, произошло следующее:

import shiboken
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libshiboken.so: cannot open shared object file: No such file or directory

Google показал, что проблема вызвана тем, что $LD_LIBRARY_PATH не содержит пути, по которому находятся эти библиотеки. Прежде всего, Ubuntu 12 (и я думаю, что 10 и 11 также) больше не использует переменную окружения $LD_LIBRARY_PATH, поэтому она даже не была установлена. Таким образом, даже путь был неправильным, потому что я пытался соединить эту неустановленную переменную с путем:

export LD_LIBRARY_PATH=$PYSIDESANDBOXPATH/lib:$LD_LIBRARY_PATH

Таким образом, он обработал его как две обычные строки и просто соединил их вместе. Фрагмент ниже показывает, как безопасно присоединиться к ним, чтобы избежать таких проблем. Но и это не решило проблемы. поскольку запуск ldconfig по-прежнему ничего не обновлял, поэтому импорт в python снова не удался. Окончательное решение, найденное и с помощью Google :), заключалось в создании нового файла в /etc/ld.so.conf.d/ и помещении туда содержимого $LD_LIBRARY_PATH, после чего запускался ldconfig. Итак, вот окончательный сценарий установки, который работал, как и ожидалось:

#!/usr/bin/env bash
export PYSIDESANDBOXPATH=/path/to/my/virtualenv
export PATH="$PYSIDESANDBOXPATH/bin${PATH:+:$PATH}"
export PYTHONPATH="$PYSIDESANDBOXPATH/lib/python2.7/site-packages${PYTHONPATH:+:$PYTHONPATH}"
export LD_LIBRARY_PATH="$PYSIDESANDBOXPATH/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export PKG_CONFIG_PATH="$PYSIDESANDBOXPATH/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$PYSIDESANDBOXPATH -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_BUILD_TYPE=Debug -DENABLE_ICECC=0
make
make install
sudo sh -c "echo $LD_LIBRARY_PATH > /etc/ld.so.conf.d/shiboken.conf"
sudo ldconfig

Вот и все, мне потребовалось несколько часов, чтобы понять, надеюсь, это спасет кого-то еще :)

person andrean    schedule 07.09.2012
comment
у кого-нибудь есть решение для версии Windows...? - person ; 05.01.2013

Вот как я компилирую shiboken.pyd в Windows из исходного кода, проверенного с помощью PySide-1.1.2 + Qt4.8.4 + msvc2010.

Сначала вручную загрузите shiboken-1.1.2.tar.bz2, распакуйте его. Затем скомпилируйте его следующим образом (возможно, вам потребуется настроить virtualenv):

python setup.py build --openssl=C:\dev\OpenSSL\1.0.0j\bin --qmake=C:\Qt\4.8.4\bin\qmake.exe

После завершения я получил shiboken.pyd по адресу:

PySide-1.1.2\pyside_install\py2.7-qt4.8.4-32bit-release\lib\site-packages\shiboken.pyd

P.S.

Однако shiboken.pyd отсутствовал в «PySide-1.1.2\build\lib», где файлы устанавливались в пакеты сайтов. Это объясняет, почему я не смог получить shiboken.pyd, скомпилировав PySide из PIP, используя:

pip install PySide --install-option="--openssl=C:\dev\OpenSSL\1.0.0j\bin" --install-option="--qmake=C:\Qt\4.8.4\bin\qmake.exe"

кстати, в Mac OS X, если вы устанавливаете PySide с помощью macports, «импортировать шибокен» также не удастся, потому что он установлен в неправильное место («/opt/local/lib/python2.7/site-packages» вместо « /opt/local/Library/Frameworks/Python.framework/Version/2.7/lib/python2.7/site-packages"). Добавьте «/opt/local/lib/python2.7/site-packages» в PYTHONPATH, чтобы решить проблему.

В сценариях pyside-setup определенно есть ошибки. Надеюсь, Digia сможет послать кого-нибудь починить PySide до того, как проект заглохнет.

person jichi    schedule 30.03.2013