LoginSignup
61
54

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-06-15

はじめに

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

更新履歴

  • 2022/9/10
    • コマンドでのマウントからGUIでのマウントに変更
    • Colaboratoryのtensorflowのバージョンが2に変わったので、tensorflow2向けのコードに修正

認証とディレクトリ移動

  1. Google Drive上で、Colaboratoryのファイルを作成して、Colaboratoryを起動します。
  2. サイドメニューから[ファイル] - [ドライブをマウント]を選択して、アクセス許可を与えます。
    スクリーンショット 2022-09-10 191722.jpg
    スクリーンショット 2022-09-10 191920.jpg
  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
from tensorflow.keras.backend import eval

hello = tf.constant('Hello, TensorFlow!')
print(eval(hello))

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

Colaboratory:test.ipynb
import Test

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

Colaboratory:test.ipynb:出力
b'Hello, TensorFlow!'

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

事例1

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

変更後:Test.py
import tensorflow as tf
from tensorflow.keras.backend import eval

hello = tf.constant('Hello, TensorFlow!!!!!')
print(eval(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などを使用して編集した場合も同じでした。

対策

以下のどちらかで解決しました。

対策1

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

※ 再度ディレクトリの移動が必要になります。

対策2

読み込み側でreload()をすることで、解決できます。

Colaboratory:test.ipynb
import Test
import imp
imp.reload(Test)

まとめ

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

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

61
54
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
54