CSVへの書き出しがうまくいかない

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で実行したところ、次のような画面が表示されました。

py2appで作ったMac用アプリが動かない原因を探る

そこで、パッケージ内のプログラムを直接実行してみると、次のように、beautifulsoupが見つからないエラーが起こっていたので、virtualenv環境にBeautifulSoupをインストールしてみることにしました。

py2appで作ったMac用アプリが動かない原因を探る

このプログラムをダブルクリックで実行すると、ターミナルが立ち上がり、エラーの原因がわかります。

py2appで作ったMac用アプリが動かない原因を探る

BeautifulSoupのインストール

virtualenv環境のgsgapppip install beautifulsoup4を実行して、BeautifulSoupをインストールし、rm -rf build distで作成し他アプリを削除したあと、再びsetup.pypy2appで実行します。

再びこの画面が。。。

py2appで作ったMac用アプリが動かない原因を探る

再びパッケージ内のプログラムから実行してみると、requestsが見つからないとのこと。

py2appで作ったMac用アプリが動かない原因を探る

再びターミナルに戻ってrequestsをインストールしてからsetup.pyを実行します。

requestsのインストール

再びターミナルに戻ってpip install requestsrequestsをインストールし、rm -rf build distで作成し他アプリを削除したあと、setup.pyを実行します。

出来上がったアプリをダブルクリックすると、無事tkinterで作成したウインドウが立ち上がりました。

Google検索からURLとタイトルを取得する

書き出すCSVにデータがない

入力ウインドウが無事立ち上がったのですが、検索キーワードを入力して、抽出ボタンでCSVを作成すると、次のようなタイトルの項目だけが入力されたCSVができています。

書き出したCSV

CSVは書き出せているので、scrage_t_u.pyは読み込んでいるものの、Google検索ができていないようです。

そこで、パッケージ内のプログラムから実行してみました。

同じように入力ウインドウが立ち上がるので、キーワードを入力して、抽出ボタンをクリックしてみると、きちんとCSVファイルにURLとタイトルが書き出されていました。

CSVへの書き出し

GUIアプリが原因?

パッケージ内のプログラムだと正常に動いて、GUIアプリは動かないということで、いろいろとネットで検索してみたのですが、GUIだと環境変数のPATHがとおっていないという記事がありましたが、一体全体何のことやら???

CSVは書き出せているので、scrape_t_u.pyのコード自体は問題ないようですが、パッケージ内の元のプログラムでは、scrape_t_u.pyのどこかの部分でデータが取得できていないようです。

この他にも、setup.pyの設定ののDATAFILESにscrape_t_u.pyを指定してみたり、OPTIONのincludescrape_t_uを入れたり、ちょっとコードを触ってはpy2appを実行してみるけど、まったくもって解決に至らず。。。

GUIアプリだからうまくいかないのがわかっているので、どうすれば解決するのか、もう少し調べてみたいと思います。

それでは、明日もGood Python!