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

公開日: 2016年01月08日 更新日: 2019年05月11日

旧ブログ

t f B! P L

前の関連記事: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は何も入っていないので適当な文字列のリストを入れました。
1
2
3
4
5
6
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ウィンドウを閉じると再実行できるようになりました。
1
2
3
4
5
6
7
8
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.の解決方法。

ブログ検索 by Blogger

Translate

«
Jan. 2016
»
Sun
Mon
Tue
Wed
Thu
Fri
Sat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Created by Calendar Gadget

QooQ