Google Colaboratoryはpythonを動かすのに便利な環境ですが、Jupyterの環境ですのでJupyterファイル(.ipynb)を動かすことになります。クラスやライブラリを作成してpythonファイル(.py)にしたときに、取り込みをできるようにしていきます。
(1) pythonファイルを用意する
今回は、下記のような2点を与えてその2点間距離と中点を求めるクラスのプログラムを作成してあるとします。これを自分のPCで「PointDrive.py」として保存して下さい(Colab上でやるのではなく、自分のローカルPC上でやる)。
[PointDrive.py]
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import math | |
class PointDrive: | |
def __init__(self, x1, x2): | |
self.x1 = x1 | |
self.x2 = x2 | |
def get_distance(self): | |
return math.sqrt((self.x1[0] - self.x2[0])**2 + (self.x1[1] - self.x2[1])**2) | |
def get_midpoint(self): | |
return [(self.x1[0] + self.x2[0])/2, (self.x2[0] + self.x2[1])/2] |
(2) pythonファイル(PointDrive.py)をGoogle Driveの指定場所にアップロード
作成したPointDrive.pyをGoogle Drive上の決められた場所にアップロードします。
(3) Google ColaboratoryでJupyterファイルを開き、PointDrive.pyを利用するColab上でJupyterファイルを開きます。Jupyterファイルの保存場所はどこでも良いです。
(i) Google Driveをマウント
from google.colab import drive
drive.mount('/content/drive')
マウントができると、Jupyter上からDriveのファイルが見えます。
(ii) PointDrive.pyのパスを設定
PointDrive.pyが入っているディレクトリ(今回の例ではlibrary)を右クリックして、Copy pathをクリックします。そのパスを使って、下記のようにパスの設定をします。パスを設定後、PointDriveをインポートしてmdlとして使えるようにしています。
import sys
sys.path.append('/content/drive/MyDrive/public/python/library')
import PointDrive as mdl
(4) PointDriveクラスのインスタンスを作成して、実行する。
次のように座標を2つ与えてインスタンスを生成します。
x1 = [5, 7]
x2 = [2, 3]
p = mdl.PointDrive(x1,x2)
print('Distance = {0}, MidPoint = {1}'.format(p.get_distance(), p.get_midpoint()))
このように、クラスを利用して実行ができました。
main全体のコード
2021/08/25 追記
pythonファイルでクラスが書いてあるファイルにメインの呼び出しが書いてあるときは、もっと簡単に実行ができます。ファイルにメインの呼び出しがあるとは、ここを参考にして下さい。
このように (1) Google Driveをマウントする。(2) pythonコマンドでファイルを実行する。この2段階で実行できます。ファイルのフルパスを得る必要がありますが、それができれば簡単です。
その他の注意
Google Colab上で入力や結果でcsvを使う場合、これもGoogle Drive上でフルパスで指定しなければならず、意外に面倒です。
0 件のコメント:
コメントを投稿