2016年02月28日
pywinautoとcx_freezeとpywin32の共存
念願のpywinautoをインストールしようと思う。
windowsの自動化だ。
検索するとver.0.4.0がよく出てくる。
これが最新版なのかな?
>sourceforge python win32 automation
>https://sourceforge.net/projects/pywinauto/files/
もう少し根気よく検索していくと
ver.0.4.2で記載しているサイトを見つける。
英語だけど、、、公式サイトかな?
でもダウンロードページに行くと、
さっきと同じ0.4.0のダウンロードサイトに行くようだ。
>pywinauto 0.4.2 documentation
>http://pywinauto.googlecode.com/hg/pywinauto/docs/getting_started.html
もっと調べていくとpipでインストールできると
書いてあるQ&Aを見つける。
pythonの3系もバンドルされている、とある。
(バンドルの意味はわからないが、、)
>yahoo知恵袋 pythonのpywinauto-0.4.0のインストールについて質問です。
>http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14147728284
pipとは何ぞやと思いながら、そのページに書いてある
pip install pywinautoというコマンドを
コマンドプロンプトに打ってみる。
するとコマンドプロンプトの画面にたくさん文字が出てきて
よく見ると0.5.4と書いてある。
どうやら最新版は0.5.4のようだ。
pipとはpythonのパッケージをインストール、アンインストールする
仕組みのようだ。
(pip uninstall パッケージ名でアンインストールもできるようだ)
よしこれでついにpywinauto をインストールしたぞ。
ということで、下記のサイトを参考にして
さっそくサンプルコードを書いてみる。
>necoakの日記 pywinauto で、pythonでWindows GUI 自動化の試み
>http://d.hatena.ne.jp/necoak/20120917/1347866653
from pywinauto import application
app = application.Application.start("C:\Program Files (x86)\Internet Explorer\iexplore.exe")
拡張子は.pyでいいのかな。pythonだし。
とりあえずauto01.pyで保存。
で、コマンドプロンプト上でcdコマンドを使って、
ファイルのあるフォルダに移動し
python auto01.pyコマンドで実行。
あれ?回らない。
win32apiがない、と表示される。
どういうことだ。。
検索して調べると、pywin32という
パッケージをインストールする必要があるようだ。
pipで入れようと試みるが、コマンドを打っても入らない。
下記のサイトのpywin32-220.win-amd64-py3.4.exeをダウンロードしてインストール。
>sourceforge Python for Windows Extensions
>https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
そして、もう一度実行(python auto01.py)
、、、回らない。
今度はソースのstart関数にcmd_lineというものが足りてないらしい。
検索し続けた結果、
下記のように書き直してみた。
ちゃんとcmd_lineも書いてある。
from pywinauto.application import Application
app = Application().Start(cmd_line=u'"C:\Program Files (x86)\Internet Explorer\iexplore.exe" ')
実行!(python auto01.py)
やったー成功。
今となっては懐かしいinternet explorerが起動。
「32bitプログラムは32bit pythonで自動化すべき(あなたは64bit pythonを使っているけど)」
というwarningが出てるけど、まあ気にしない。
時代は64bitパソコンに移行してるんだから。
で、全てが上手くいったように思えたが、、、
前回「HelloWorld」とテキストファイルに出力するだけの
pythonプログラムを書いて、cx_freezeを使ってexeファイル化したが、、
>pythonでexeファイルを作ろう
>https://fanblogs.jp/mountain4101/archive/48/0
pywinautoとpywin32を入れた後に、
上記テキストファイル出力プログラムを再度exeファイル化しようとしたら、、、
エラー。
exeファイルとpython34.dllファイルはできたが、
他のファイルが吐き出されなくなった。
exeファイルをダブルクリックしてもエラーで動かない。
えー、ということはpywinauto・pywin32による自動化と
cx_freezeによるexe化の両方を実現することはできないということ!?
そんなアホな話があってたまるか。
エラー部分を見ると、
C:\Python34\Lib\site-packages\win32\libのフォルダにある
「win32verstamp.py」というファイルの123行目でエラーが起きているらしい。
で、調べた。
日本語のサイトには書いてない。
英語のサイトもたくさん見た。英語苦手だけど。
で、下記のサイトにたどり着く。
>[python-win32] win32api - small patch for win32verstamp.py
>https://mail.python.org/pipermail/python-win32/2014-December/013327.html
「if not ofn:」を「if ofn is None:」に直せということか?
確かにwin32verstamp.pyの129行目に「if not ofn:」があるので
「if ofn is None:」に書き換えてみる。
そして、テキストファイル出力プログラムを再度exe化してみる。。。
やったー回った。
test.exeファイルを実行すると
前回同様、ちゃんとHelloWorldと書かれたテキストファイルが出力された。
今回はさすがに無理かと思ったけど、
海外にはちゃんと先に悩んで解決した人がいるんだと思った。
これでpywinauto・pywin32とcx_freezeを共存させることができた。
自動化のプログラムをたくさん作ろう。
windowsの自動化だ。
検索するとver.0.4.0がよく出てくる。
これが最新版なのかな?
>sourceforge python win32 automation
>https://sourceforge.net/projects/pywinauto/files/
もう少し根気よく検索していくと
ver.0.4.2で記載しているサイトを見つける。
英語だけど、、、公式サイトかな?
でもダウンロードページに行くと、
さっきと同じ0.4.0のダウンロードサイトに行くようだ。
>pywinauto 0.4.2 documentation
>http://pywinauto.googlecode.com/hg/pywinauto/docs/getting_started.html
もっと調べていくとpipでインストールできると
書いてあるQ&Aを見つける。
pythonの3系もバンドルされている、とある。
(バンドルの意味はわからないが、、)
>yahoo知恵袋 pythonのpywinauto-0.4.0のインストールについて質問です。
>http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14147728284
pipとは何ぞやと思いながら、そのページに書いてある
pip install pywinautoというコマンドを
コマンドプロンプトに打ってみる。
するとコマンドプロンプトの画面にたくさん文字が出てきて
よく見ると0.5.4と書いてある。
どうやら最新版は0.5.4のようだ。
pipとはpythonのパッケージをインストール、アンインストールする
仕組みのようだ。
(pip uninstall パッケージ名でアンインストールもできるようだ)
よしこれでついにpywinauto をインストールしたぞ。
ということで、下記のサイトを参考にして
さっそくサンプルコードを書いてみる。
>necoakの日記 pywinauto で、pythonでWindows GUI 自動化の試み
>http://d.hatena.ne.jp/necoak/20120917/1347866653
from pywinauto import application
app = application.Application.start("C:\Program Files (x86)\Internet Explorer\iexplore.exe")
拡張子は.pyでいいのかな。pythonだし。
とりあえずauto01.pyで保存。
で、コマンドプロンプト上でcdコマンドを使って、
ファイルのあるフォルダに移動し
python auto01.pyコマンドで実行。
あれ?回らない。
win32apiがない、と表示される。
どういうことだ。。
検索して調べると、pywin32という
パッケージをインストールする必要があるようだ。
pipで入れようと試みるが、コマンドを打っても入らない。
下記のサイトのpywin32-220.win-amd64-py3.4.exeをダウンロードしてインストール。
>sourceforge Python for Windows Extensions
>https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/
そして、もう一度実行(python auto01.py)
、、、回らない。
今度はソースのstart関数にcmd_lineというものが足りてないらしい。
検索し続けた結果、
下記のように書き直してみた。
ちゃんとcmd_lineも書いてある。
from pywinauto.application import Application
app = Application().Start(cmd_line=u'"C:\Program Files (x86)\Internet Explorer\iexplore.exe" ')
実行!(python auto01.py)
やったー成功。
今となっては懐かしいinternet explorerが起動。
「32bitプログラムは32bit pythonで自動化すべき(あなたは64bit pythonを使っているけど)」
というwarningが出てるけど、まあ気にしない。
時代は64bitパソコンに移行してるんだから。
で、全てが上手くいったように思えたが、、、
前回「HelloWorld」とテキストファイルに出力するだけの
pythonプログラムを書いて、cx_freezeを使ってexeファイル化したが、、
>pythonでexeファイルを作ろう
>https://fanblogs.jp/mountain4101/archive/48/0
pywinautoとpywin32を入れた後に、
上記テキストファイル出力プログラムを再度exeファイル化しようとしたら、、、
エラー。
exeファイルとpython34.dllファイルはできたが、
他のファイルが吐き出されなくなった。
exeファイルをダブルクリックしてもエラーで動かない。
えー、ということはpywinauto・pywin32による自動化と
cx_freezeによるexe化の両方を実現することはできないということ!?
そんなアホな話があってたまるか。
エラー部分を見ると、
C:\Python34\Lib\site-packages\win32\libのフォルダにある
「win32verstamp.py」というファイルの123行目でエラーが起きているらしい。
で、調べた。
日本語のサイトには書いてない。
英語のサイトもたくさん見た。英語苦手だけど。
で、下記のサイトにたどり着く。
>[python-win32] win32api - small patch for win32verstamp.py
>https://mail.python.org/pipermail/python-win32/2014-December/013327.html
「if not ofn:」を「if ofn is None:」に直せということか?
確かにwin32verstamp.pyの129行目に「if not ofn:」があるので
「if ofn is None:」に書き換えてみる。
そして、テキストファイル出力プログラムを再度exe化してみる。。。
やったー回った。
test.exeファイルを実行すると
前回同様、ちゃんとHelloWorldと書かれたテキストファイルが出力された。
今回はさすがに無理かと思ったけど、
海外にはちゃんと先に悩んで解決した人がいるんだと思った。
これでpywinauto・pywin32とcx_freezeを共存させることができた。
自動化のプログラムをたくさん作ろう。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/4786829
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック