web-dev-qa-db-ja.com

Google Colabでの.pyファイルのインポート

コードを.pyファイルにアップロードして、コラボコードセルにインポートする方法はありますか?

私が見つけた他の方法は、ローカルのJupyterノートブックを作成してからColabにアップロードすることですが、それが唯一の方法ですか?

33
Reham M Samir

最初に保存してからインポートできます。

from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib

更新(2018年11月):簡単にアップロードできるようになりました

  • [>]をクリックして左ペインを開きます
  • ファイルタブを選択
  • [アップロード]をクリックして、[mylib.py]を選択します
  • mylibをインポートする
38
  1. upload()関数を使用してGoogle Colabにローカルファイルをアップロードできますgoogle.colab.files
  2. Githubにファイルがある場合は、!git clone https://github.com/username/repo_name.git を使用してリポジトリを複製します。次に、jupyterノートブックのように、マジック関数%load%load filename.pyを使用してロードします。
8
Aditya Mishra

Korakot Chaovavanichの回答に基づいて、Colabインスタンス内で必要なすべてのファイルをダウンロードするために以下の関数を作成しました。

from google.colab import files
def getLocalFiles():
    _files = files.upload()
    if len(_files) >0:
       for k,v in _files.items():
         open(k,'wb').write(v)
getLocalFiles()

その後、通常の「import」ステートメントを使用して、Colabにローカルファイルをインポートできます。これが役立つことを願っています

7
Flint Joe

他の誰かが、Google colab内のgdriveからファイル/パッケージをインポートする方法を知りたい場合に。次の手順は私のために働いた:

1)GoogleドライブでGoogleドライブをマウント:

from google.colab import drive
drive.mount('/content/gdrive/')

2)sys:を使用して、ディレクトリをpythonパスに追加します

import sys
sys.path.append('/content/gdrive/mypythondirectory')

これで、そのディレクトリからデータをインポートできるはずです!

1
a3VonG

この方法を試してください:

Plant_seedlingsという名前のパッケージがあります。パッケージはGoogleドライブに保存されます。私がすべきことは、このパッケージを/usr/local/lib/python3.6/dist-packages/にコピーすることです。

!cp /content/drive/ai/plant_seedlings.tar.gz /usr/local/lib/python3.6/dist-packages/

!cd /usr/local/lib/python3.6/dist-packages/ && tar -xzf plant_seedlings.tar.gz

!cd /content

!python -m plant_seedlings
1
Feng

これらの.pyファイルをGoogleドライブにアップロードして、Colabがそれらを使用できるようにすることができます。

!mkdir -p drive
!google-drive-ocamlfuse drive

ルートフォルダー内のすべてのファイルとフォルダーはdriveにあります。

1
Huyen

私は同じ問題に直面しています。多数の投稿を読んだ後、私が最終的に他の多くの方法よりも選んだ次のソリューションを紹介したいと思います(例:urllibhttpimport、GitHubからのクローン、インストール用のモジュールのパッケージ化など)。ソリューションでは、適切な認証のためにGoogle Drive APIofficial doc )を利用します。

利点:

  1. 簡単で安全(ファイル操作の例外や追加の認証を処理するコードは不要)
  2. Googleアカウントの資格情報で保護されたモジュールファイル(他のユーザーはそれらを表示/取得/編集できません)
  3. アップロード/アクセスする対象を制御します(ファイルごとにいつでもアクセスを変更/取り消しできます)
  4. 1か所ですべて(別のファイルホスティングサービスに依存したり管理したりする必要はありません)
  5. モジュールファイルの名前変更/再配置の自由(パスベースではなく、他人のノートブックコードを壊しません)

手順:

  1. .pyモジュールファイルをGoogleドライブに保存します。既にColabを使用しているため、これが必要です。
  2. 「共有可能なリンクを取得」を右クリックし、「id=」の後の部分をコピーします-Googleドライブによって割り当てられたファイルID
  3. 次のコードスニペットをColabノートブックに追加して実行します。
!pip install pydrive                             # Package to use Google Drive API - not installed in Colab VM by default
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth                    # Other necessary packages
from oauth2client.client import GoogleCredentials
auth.authenticate_user()                         # Follow Prompt in the authorization process
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)
your_module = drive.CreateFile({"id": "your_module_file_id"})   # "your_module_file_id" is the part after "id=" in the shareable link
your_module.GetContentFile("your_module_file_name.py")          # Save the .py module file to Colab VM
import your_module_file_name                                    # Ready to import. Don't include".py" part, of course :)

サイドノート

最後になりましたが、このアプローチの 元の貢献者 を称賛すべきです。私がそれを試みたときにエラーを引き起こしたので、その投稿はコードにいくつかのタイプミスを持っているかもしれません。上記のコードスニペットをさらに読み、トラブルシューティングした後、機能しました(今日のColab VM OS:Linux 4.14.79)。

1
Frank Wang

2019年6月です。Pythonパッケージの__init__.pyで、すべての関連ファイルが順番にインポートされていることを確認してください。コードをGitにプッシュするか、 このコード を使用します。

例えば

from .Boxes import *
from .Circles import *
from .Rectangles import *
...

ファイルのインポートに__init__.pyファイルのパッケージ名を使用しないでください。

googleコラボでは、

! rm -rf SorghumHeadDetection
! git clone https://github.com/user/amazing-repo-name/
0
Netro