Edited at

Google ColaboratoryでPythonファイルを実行する


はじめに

自宅では、Anacondaで環境構築して、統合開発環境(IDE)は「Spyder」を使用していますが、出先でもやりたくなってきたので、Google Colaboratoryを使用することにしました。

環境構築にあたっては、以下を参考にさせていただきました。

- Google Colaboratory概要と使用手順(TensorFlowもGPUも使える)

- Google Colabの知っておくべき使い方 – Google Colaboratoryのメリット・デメリットや基本操作のまとめ


認証とディレクトリ移動


  1. Google Drive上で、Colaboratoryのファイルを作成して、Colaboratoryを起動します。

  2. ノートブックで以下のコードを入力して実行します。


Colaboratory:test.ipynb

from google.colab import drive

drive.mount('/content/drive')

認証用のURLとEnter your authorization code:が表示されます。

認証用のURLを選択して認証を進めるとコードが表示されるので、Enter your authorization code:にコピペします。

Mounted at /content/driveと表示されればOKです。

3. 以下のコードを入力して、作業ディレクトリに移動します。マイドライブの下に「Colaboratory」というフォルダを作っている前提とします。


Colaboratory:test.ipynb

import os

os.chdir('/content/drive/My Drive/Colaboratory/')

確認として、以下を実行します。「Colaboratory」の下においているファイル一覧が表示されれば、OKです。


Colaboratory:test.ipynb

!ls- la

#「!」を先頭につけることで、Linuxのコマンドが使用できます。


Pythonファイルの実行

Pythonのファイルを作成して、「Colaboratory」フォルダに格納します。

今回はTensorFlowのテストも兼ねて、以下のようにします。


Test.py

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))


ノートブックでファイル名を指定して、importします。それだけです。


Colaboratory:test.ipynb

import Test


以下のように実行結果が表示されます。


Colaboratory:test.ipynb:出力

b'Hello, TensorFlow!'



気をつけないといけない点


事例1

「Test.py」をローカルで以下のように書き換えて、Google Drive上のファイルを上書きしたとします。


変更後:Test.py

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!!!!!')
sess = tf.Session()
print(sess.run(hello))


出力がb'Hello, TensorFlow!!!!!!のように変わっているはず!と思いきや、実行しても何も表示されません。


事例2

クラスをつかった場合


Test3.py

class Test:

def test():
print('Hello, Python!')


Colaboratory:test.ipynb

from Test3 import Test

Test.test()


Colaboratory:test.ipynb:出力

Hello, Python!


このPythonファイルを以下のように変更して、Google Drive上のファイルを上書きして実行します。


変更後:Test3.py

class Test:

def test():
print('Hello, Python!!!')


Colaboratory:test.ipynb:出力

Hello, Python!


出力内容が変わりません。。。

このせいで、1週間くらいはまりました:crying_cat_face:

どうも、一度importすると、Colaboratoryでキャッシュのように覚えているらしく正常に動作しないことがありそうです。

今回は、ローカルで編集して、GoogleDrive上にコピーしましたが、GoogleDrive上で直接Anyfile NotePadなどを使用して編集した場合も同じでした。


対策

以下で解決しました。

- ノートブックのツールバーの [ランタイム] - [ランタイムの再起動]

いずれも、再度ディレクトリの移動が必要になります。


まとめ

Google Colaboratory非常に便利ですが、ノートブック外でファイルの修正をした場合は、ランタイムを再起動する!というのを習慣づけた方がよさそうです。

Google ColaboratoryのGPUを使用時に、いかに早かったかは次回で!!!