【Python学習】Python起動時に自動でスクリプトを実行する方法

Pocket

Pythonチュートリアル第16章「補遺」の内容。

今回は、Python起動時に自動的にスクリプトを実行する方法に関してまとめてみる。

 

自動でスクリプトを実行

 

Pythonのインタープリタを起動するときに、自動的にスクリプトを実行すると便利な場合がある。

例えば、Python起動の度に import文で決まってインポートしているパッケージやモジュールがあるとする。

インタープリタを起動して、毎度毎度 import文を書いて…とやっているわけだ。

まあ、1つや2つであればそんなに手間ではないかもしれないけれど、数が多くなると明らかに手間になる。

そもそも、コンピュータを扱っているのだから、同じ処理を毎回手動で行うというのは、コンピュータを十分に利用しきれていないと言えるかも。

ということで、Pythonを起動するときに自動でスクリプトが実行されると楽な場合があるわけで、今回はそれを設定する方法をまとめてみる。

 

スタートアップファイルで自動実行

 

ひとつ目の方法は「スタートアップファイル」。

初めからそういう名前のファイルがあるわけではなく、あらかじめ自分で作成した後にスタートアップファイルとして定義するやりかた。

スタートアップファイルとして定義されたファイルのスクリプトは、Python起動時に自動実行される。

今回は sys モジュールを自動でインポートするようなファイルを作成して、スタートアップファイルに設定してみたい。

 

現時点では、Pythonを起動しても sysモジュールはインポートされない。

インポートされていないので、「sys」が NameError になってしまう。

それでは、スタートアップファイルとなるファイルの作成から始めていく。

今回は sys モジュールのインポートができればよいので、テキストエディタで以下のように書く。

ファイル名は「.startup_file」にして、ホームディレクトリ配下に保存した。

これでファイルが用意出来たので、「スタートアップファイル」として設定する。

やり方は、OSの環境変数に先ほど作成した「.startup_file」の格納パスを指定するだけ。

私はCentOSでホームディレクトリに格納したので、以下のように設定した。

これで準備OK。

あとはPythonを起動して、sysモジュールのインポート文を書かずに、sysモジュールのメソッド等実行できるのか確かめるだけ。

おお、うまくいったね。

 

usercustomize.pyで自動実行

 

続いて、2つ目は「usercustomize.py」でスクリプトを自動実行する方法をやってみる。

これは、 site-packagesディレクトリの場所に「usercustomize.py」を作成して、先ほどのスタートアップファイルと同じように自動実行したいスクリプトを書いておく。

今回も sysモジュールのインポートで試したいので、先程のスタートアップファイルの設定を消す。

ファイルと環境変数を削除して、python起動時に sysモジュールがインポートされないことを確かめる。

OKみたいね。

続いて、site-packagesフォルダの場所を確認する。

Pythonを起動して、以下のコマンドで確認できる。

私は、.localディレクトリ以降のディレクトリパスが存在していなかったので作った。

わかりやすいように、「usercustomize.py」ファイルの中身は以下のようにしてみた。

さあ、準備ができたところで Pythonを起動してみる。

usercustomize.pyに書いたprint()関数のメッセージが表示されているからうまくいっているみたいね。

それでは、sysモジュールのsys.pathをコールしてみる。

あれ…うまくいかなかった。

print関数が表示されているので usercustomize.py の設定は問題ないと思うから、プログラムの問題かな。

ということでもう一度見てみる。

うーん、見た感じは問題なさそう。

このあと書き直してみたりしたけれど、うまくいかない。

ちょっと、これは調査します。

 

まとめ

 

ということで、今回はPython起動時のスクリプト自動実行の設定方法を確かめてみた。

片方が想定どおりにいかなかったね。print関数は実行できたから半分成功って感じ。

何が悪いのかまだ検討も付かない。

print()関数は実行できているんだからプログラムの問題じゃないのかね。

もうちょっとやってうまくいかないようだったら、TeraTermとかで聞いてみます。

さて、今回でPythonチュートリアルの内容をひと通りやり遂げたことになった。

まあ付録とかのページは残っているし、なかなかスケジュール通りとはいかなかったけれど、やり遂げたね。

いや、本番はこれからで、まずは Pythonの試験を受けて合格しなければいけない。

これまで学習した内容の振り返りと、実践的に問題を解いて力を付けたい。

11月頭の受験が目標。

ということで、今回はこの辺で。

Comments
Pocket

Related posts