Python学習【365日チャレンジ!】346日目のマスターU(@Udemy11)です。
ちょっと夜ふかしして、体が冷え切った状態で布団に入ると、あまりにも寒すぎて何度も夜中に起きて十分な睡眠が取れませんでした。
敷布団を体の下に巻き込んで寝袋状態にしないと、隙間から冷たい冷気が入ってきちゃうので、寝袋状態にして朝まで過ごせたようです。
そろそろ暖かくなるかと思いきや、まだまだ寒さが本格的になる日が多いようなので、体調管理はきっちりとして、コロナにかからないように気をつけたいと思います。
それでは今日も、Python学習を始めましょう。
昨日の復習
昨日は、py2appを使って、Google検索のページからURLとタイトルを抽出してCSVに書き出すMac用アプリを作成しました。
virtualenvを使って環境を構築したあと、必要な外部ライブラリをpip
インストールして、setup.py
を作成してアプリを作成しました。
ただ、GUIアプリではうまく検索結果をCSVに抽出することができませんでした。
詳しくはこちらの記事をごらんください。
今日はその原因を探るべく、ネットを検索しつつ、いろいろと試してみたいと思います。
オプションをいろいろ設定
まず最初に作成したsetup.py
は、下記のサイトを参考にして、オプションやアプリの名前、アイコンもicns
ファイルを用意ししていました。
記述していたコードがこちら
from setuptools import setup
APP = ['getut_data.py']
APP_NAME = 'GSGetter'
DATA_FILES = []
OPTIONS = {
'argv_emulation': False,
'iconfile': 'gsg.icns',
'plist': {
'CFBundleName': APP_NAME,
'CFBundleDisplayName': APP_NAME,
'CFBundleGetInfoString': "GSGetter",
'CFBundleIdentifier': "com.udemyfun.GSGetter",
'CFBundleVersion': "1.0",
'CFBundleShortVersionString': "1.0",
'NSHumanReadableCopyright': "Copyright (C) 2020, MasterU, All Rights Reserved"
}
}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
このsetup.py
をpy2appで実行したところ、次のような画面が表示されました。
そこで、パッケージ内のプログラムを直接実行してみると、次のように、beautifulsoupが見つからないエラーが起こっていたので、virtualenv環境にBeautifulSoupをインストールしてみることにしました。
このプログラムをダブルクリックで実行すると、ターミナルが立ち上がり、エラーの原因がわかります。
BeautifulSoupのインストール
virtualenv環境のgsgapp
でpip install beautifulsoup4
を実行して、BeautifulSoupをインストールし、rm -rf build dist
で作成し他アプリを削除したあと、再びsetup.py
をpy2app
で実行します。
再びこの画面が。。。
再びパッケージ内のプログラムから実行してみると、requests
が見つからないとのこと。
再びターミナルに戻ってrequests
をインストールしてからsetup.py
を実行します。
requestsのインストール
再びターミナルに戻ってpip install requests
でrequests
をインストールし、rm -rf build dist
で作成し他アプリを削除したあと、setup.py
を実行します。
出来上がったアプリをダブルクリックすると、無事tkinter
で作成したウインドウが立ち上がりました。
書き出すCSVにデータがない
入力ウインドウが無事立ち上がったのですが、検索キーワードを入力して、抽出ボタンでCSVを作成すると、次のようなタイトルの項目だけが入力されたCSVができています。
CSVは書き出せているので、scrage_t_u.py
は読み込んでいるものの、Google検索ができていないようです。
そこで、パッケージ内のプログラムから実行してみました。
同じように入力ウインドウが立ち上がるので、キーワードを入力して、抽出ボタンをクリックしてみると、きちんとCSVファイルにURLとタイトルが書き出されていました。
GUIアプリが原因?
パッケージ内のプログラムだと正常に動いて、GUIアプリは動かないということで、いろいろとネットで検索してみたのですが、GUIだと環境変数のPATHがとおっていないという記事がありましたが、一体全体何のことやら???
CSVは書き出せているので、scrape_t_u.py
のコード自体は問題ないようですが、パッケージ内の元のプログラムでは、scrape_t_u.py
のどこかの部分でデータが取得できていないようです。
この他にも、setup.pyの設定ののDATAFILESにscrape_t_u.py
を指定してみたり、OPTIONのinclude
にscrape_t_u
を入れたり、ちょっとコードを触ってはpy2appを実行してみるけど、まったくもって解決に至らず。。。
GUIアプリだからうまくいかないのがわかっているので、どうすれば解決するのか、もう少し調べてみたいと思います。
それでは、明日もGood Python!