#概要
Google ColaboratoryでTwitterのBOT制作を勉強していた時に、自作モジュールが読み込めず沼ったので備忘録として残しておきます。
######ディレクトリ構成
My Drive/
└ my_projects/
├ main.ipynb
└ config.py
ここでのconfig.pyに、以下のような感じでアクセストークンに入れておきます。
CONSUMER_KEY = "XXXXXXXXXXXXXXXXXXXX"
CONSUMER_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXX"
ACCESS_TOKEN="XXXXXXXXXXXXXXXXXXXXXX"
ACCESS_SECRET="XXXXXXXXXXXXXXXXXXXXXX"
#手順
###config.pyの生成
Google Colaboratoryで開発するときには基本的に**.ipynbでファイルが生成されますが、このままではimportできないみたいです。
なので、Google Colaboratoryでモジュールを作っていた場合は
ファイル>ダウンロード>.pyをダウンロードで
ダウンロードしてください。
その後、先ほどと同じディレクトリにアップロードしてください。
###読み込ませる①
ここからはmain.ipynbに読み込ませていきます。
importの際にsys.path()**を使ってパスを与えてあげます。
import sys
ROOTPATH ='drive/My Drive/my_projects/'
sys.path.append(ROOTPATH)
import my_projects
ここではパスを別で設定していますが、ファイルのパスを sys.path() に直接入れてあげても大丈夫です。
上記のようにフォルダのパスを設定しておくと、そのフォルダ内であれば別のモジュールも読み込めるようになるので便利です。
###読み込ませる②
フォルダのパスまで来たので config.py を読み込ませます。
from my_projects import config
上記のようにfrom [フォルダ名] import [ファイル名] で読み込んでくれます。
今回は各値を以下のように取り出しました。
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_SECRET
これを使って
twitter = OAuth1Session(CK, CS, AT, ATS)
みたいにすれば認証できます。
##読み込んでくれない時
どうやら一発で読み込んでくれない時もあるみたいです。
その時は
ランタイム>ランタイムを出荷時にリセット
でGoogleDriveのマウントを外し、もう一度マウントを行うとうまくいくこともあるみたいです。