質問: ### 実現したいこと Google Colabratoryの環境でPythonの学習をしております. コードが長くなり,可読性が低下してきたことから,ファイルをモジュール毎に分割して管理したいと考えております.そこで今回は,**「Google Colabratoryのノートブック上で別の.pyファイルをインポートし,実行する」**ということを実現したいと考えております. 調べればヒットしない内容ではないのですが,同一事例を参考にして,同様な手順で行っても,何故か上手く行かず,困り果てている状況で,皆様のお力をお借りしたいと思った次第です. ### 該当のソースコード ファイルは以下の2つです. ###### Module1.py ``` print('Hello World!') ``` ###### Main.ipynb ``` # Google Driveのマウント-------------- from google.colab import drive drive.mount('/content/drive') # 作業ディレクトリの移動と確認------------------------ import os os.chdir('/content/drive/My Drive/Colab_Test/my_projects/') !ls # 他ファイルのインポート・リロード------------------------ import Module1 import imp imp.reload(Module1) ``` ###### ディレクトリ構成 ``` My Drive/ └ Colab_Test/ └ my_projects/ ├ Main.ipynb └ Module1.py ``` ### 試したこと 上記のMain.ipynbから同一ディレクトリにあるModule1.pyをインポートして使用する,ということを試しました. Google Driveのマウント,ディレクトリの移動も問題なく,`!ls`コマンドの結果として, ``` Main.ipynb Module1.py __pycache__ ``` が得られているので,ここまでは問題ないと考えています. しかしながら,`import Module1`を実行しても,`Hello World!`が返ってきません. Google Colaboratory特有のキャッシュやランタイムの問題も考えられますので, ``` import imp imp.reload(Module1) ``` にて,インポートしたModule1.pyをリロードしても結果は同じでした. ### 参考にしたこと 下記の2つの記事を参考にさせていただきました. 1. Google ColaboratoryでGoogle Drive上の.pyファイルをインポート 2. Google ColaboratoryでPythonファイルを実行する ### 発生している問題・エラーメッセージ エラーメッセージは特にありません. 上記の記事と同様な方法で試したつもりですが,期待する結果が得られず,エラーメッセージも特に出ないため,何が原因なのか見当がつかない状況です. この現象について,お分かりの方がいらっしゃいましたら,ご助言をいただければ幸いです. 何卒よろしくお願いいたします. ### 補足情報(FW/ツールのバージョンなど) * 開発環境:Google Colaboratory * バージョン:python3.6.9 * ランタイムの設定:ハードウェアアクセラレータNone * OS:Ubuntu 18.04.3 LTS * CPU:Intel(R) Xeon(R) CPU @ 2.20GHz
回答: 皆様,お忙しい中,ご回答ありがとうございました.解決しました. 基本中の基本のようなことが原因で,非常にお恥ずかしい限りですが,共有させていただきます. **.pyファイルの作成に問題がありました.** 私が知る限り,Colaboratoryには.py形式で保存する機能がありませんので,Module1.pyを作成する際に,Colaboratory上でノートブック形式でModule1.ipynbを作成した後に,下図のように画面左上のファイル名の拡張子を直接編集して,.pyファイルを作成しておりました.本当にごめんなさい. !イメージ説明 拡張子をむやみにいじることはご法度であることは知っておりましたが,この方法で作成した.pyファイルでもColaboratoryで直接実行する分には問題なく動作しておりましたので,Renameする際に,内部的に良きにやってくれているものと勘違いしていました(←ど素人). しかしながら,多くの皆様の環境では問題なく実行できて,さらにはプログラミングに長けている皆様でも解決できないということは,より根本的な部分が原因である可能性が高いと思い始めていたところ,ふと上記のような拡張子変更という荒業で.pyファイルを作っていたことを思い出し,Colaboratoryのファイルメニュー下部にある「.pyをダウンロード」から正規の手続きで.pyファイルを作成し,それをアップロードした上で,Main.ipynbを実行したところ,正常に「Hello_World!!」を出力することができました. このような初歩的なことでお騒がせしてしまい,大変申し訳ありませんでした.