linuxBean14.04(95)Anaconda3にPySideをインストール

前の関連記事:linuxBean14.04(94)Eclipse4.5.1からGistに投稿するプラグインGitHub Mylyn Connectorのインストール


LibreOffice5(20)anaconda3のtkinterモジュールを使うでPythonでGUIプログラミングするためのツールについて調べている途中でPySideを知ったのでlinuxBean14.04(72)Anacondaで科学技術系Pythonパッケージを一括インストールするのAnaconda3にインストールしてみます。
(2016.1.10追記。この記事を書いてからAnaconda3にはデフォルトでPyQt4がインストールされていたことを知りました。ということでPySideは使わずPyQt4を使うことにしました。linuxBean14.04(96)Anaconda3のPyQtモジュールを使う参照。)

Anaconda CloudからAnaconda3のPython3.4にPysideをインストール


まずはcondaでPython3用のPysideのパッケージを探します。
pq@pq-VirtualBox:~$ conda search pyside
Fetching package metadata: ....
pyside                       1.1.2                    py27_0  defaults        
                             1.1.2                    py26_0  defaults        
                             1.2.0                    py27_0  defaults        
                             1.2.1                    py27_0  defaults   
Python2系のものしかありません。

Python3 & PySide - Google グループ

このQ&Aをみつけてpyzo-pysideに調べたところAnaconda Cloudに見つけました。

conda install -c https://conda.anaconda.org/pyzo pyside-pyzo

とりあえずこれでまずPython3.4にインストールしました。
pq@pq-VirtualBox:~$ conda install -c https://conda.anaconda.org/pyzo pyside-pyzoFetching package metadata: ......
Solving package specifications: ..............
Package plan for installation in environment /home/pq/anaconda3:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    openssl-1.0.2d             |                0         2.6 MB
    python-3.4.3               |                2        14.7 MB
    conda-env-2.4.5            |           py34_0          25 KB
    pyside-pyzo-1.2.1          |           py34_6        29.7 MB
    requests-2.9.0             |           py34_0         647 KB
    setuptools-19.1.1          |           py34_0         349 KB
    conda-3.19.0               |           py34_0         180 KB
    ------------------------------------------------------------
                                           Total:        48.1 MB

The following NEW packages will be INSTALLED:

    pyside-pyzo: 1.2.1-py34_6 

The following packages will be UPDATED:

    conda:       3.18.1-py34_0 --> 3.19.0-py34_0
    conda-env:   2.4.2-py34_0  --> 2.4.5-py34_0 
    openssl:     1.0.1k-1      --> 1.0.2d-0     
    python:      3.4.3-1       --> 3.4.3-2      
    requests:    2.8.0-py34_0  --> 2.9.0-py34_0 
    setuptools:  18.3.2-py34_0 --> 19.1.1-py34_0

Proceed ([y]/n)? 
インストール後TerminalでHello World in PySide/ja - Qt Wikiの例をやってみました。
pq@pq-VirtualBox:~$ /home/pq/anaconda3/bin/python
Python 3.4.3 |Anaconda 2.3.0 (32-bit)| (default, Oct 19 2015, 21:52:31) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> from PySide.QtCore import *
>>> from PySide.QtGui import *
>>> app = QApplication(sys.argv)
>>> label = QLabel("Hello World")
>>> label.show()
>>> app.exec_()
これでHelloWorldが表示されました。


閉じるボタンをクリックするにはウィンドウの横幅を広げます。

Anaconda3のPython3.3.5にPysideをインストール


まずlinuxBean14.04(86)AnacondaのパッケージをLibreOfficeマクロで使うで作成したpy335の環境にインストールします。

conda env listで環境名を確認したあとsource activate py335でpy335に切り替えてpysideをインストールしました。
pq@pq-VirtualBox:~$ conda env list
# conda environments:
#
py335                    /home/pq/anaconda3/envs/py335
root                  *  /home/pq/anaconda3

pq@pq-VirtualBox:~$ source activate py335
discarding /home/pq/anaconda3/bin from PATH
prepending /home/pq/anaconda3/envs/py335/bin to PATH
(py335)pq@pq-VirtualBox:~$ conda install -c https://conda.anaconda.org/pyzo pyside-pyzo
Fetching package metadata: ......
Solving package specifications: ..............
Package plan for installation in environment /home/pq/anaconda3/envs/py335:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    pyside-pyzo-1.2.1          |           py33_6        29.8 MB
    setuptools-19.1.1          |           py33_0         358 KB
    ------------------------------------------------------------
                                           Total:        30.1 MB

The following NEW packages will be INSTALLED:

    pyside-pyzo: 1.2.1-py33_6 
    wheel:       0.26.0-py33_1

The following packages will be UPDATED:

    pip:         7.0.3-py33_0  --> 7.1.2-py33_0 
    setuptools:  17.1.1-py33_0 --> 19.1.1-py33_0

Proceed ([y]/n)? 
インストール後TerminalからAnaconda3のpythonを起動してHelloWorldの表示ができました。

LibreOffice5のマクロモードでPysideを使ってみる


LibreOfficeのバンドルPythonをインタープリタにしてもHelloWorldの表示ができたので今度はLibreOffieceのマクロから呼び出してみます。

LibreOffice5(20)anaconda3のtkinterモジュールを使うでやったようにマクロモードではsys.argvは何も入っていないので適当な文字列のリストを入れました。
def pyside_test():
    from PySide.QtGui import QApplication, QLabel
    app = QApplication(["macro"])
    label = QLabel("Hello World")
    label.show()
    app.exec_()
このpyside_test()をLibreOfficeのマクロセレクターから呼び出すとノンモダルダイアログとしてHelloWorldを表示できました。


しかしLibreOfficeを再起動しないかぎり1回しか実行できません。

2回目に実行すると A QApplication instance already exists.と言われてしまいます。

HelloWorldを閉じても同じことです。

IPython - User - [IPython-User] simple iPython example raises exception on sys.exit()

ここに書いてあるようにQApplicationがすでに存在しているか確認するとHelloWorldウィンドウを閉じると再実行できるようになりました。
def pyside_test():
    from PySide.QtGui import QApplication, QLabel
    app = QApplication.instance()
    if not app:
        app = QApplication(["macro"])
    label = QLabel("Hello World")
    label.show()
    app.exec_()
しかしHelloWorldウィンドウを閉じずに再度同じpyside_test()を呼び出すとLibreOfficeがフリーズしました。

もうちょっと研究の余地がありそうです。

参考にしたサイト


Category:LanguageBindings::PySideJapanese - Qt Wiki
PySideの解説。

Python3 & PySide - Google グループ
Anaconda3でPySideをインストールする方法。

Anaconda Cloud
PySideのcondaパッケージ。

Hello World in PySide/ja - Qt Wiki
PySideのHelloWorldの例。

IPython - User - [IPython-User] simple iPython example raises exception on sys.exit()
A QApplication instance already exists.の解決方法。
PR

0 件のコメント:

コメントを投稿