wake-up-neo.com

.Py-Dateien in Google Colab importieren

Gibt es eine Möglichkeit, meinen Code in .py-Dateien hochzuladen und in Colab-Codezellen zu importieren? 

Der andere Weg, den ich gefunden habe, ist, ein lokales Jupyter-Notizbuch zu erstellen und es dann in Colab hochzuladen. Ist dies der einzige Weg?

17
rsam

Sie können es zuerst speichern und dann importieren.

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

Update (18. November): Jetzt können Sie ganz einfach per hochladen

  • klicken Sie auf [>], um den linken Bereich zu öffnen
  • wählen Sie die Registerkarte Datei
  • klicken Sie auf [Upload] und wählen Sie Ihr [mylib.py] aus.
  • import mylib
25

Basierend auf der Antwort von Korakot Chaovavanich habe ich die folgende Funktion erstellt, um alle für eine Colab-Instanz benötigten Dateien herunterzuladen. 

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()

Sie können dann die übliche 'import'-Anweisung verwenden, um Ihre lokalen Dateien in Colab zu importieren. ich hoffe das hilft

6
Flint Joe
  1. Sie können lokale Dateien in Google Colab hochladen, indem Sie die Funktion upload () in google.colab.files verwenden.
  2. Wenn Sie Dateien auf github haben, klonen Sie das Repo mit ! Git clone https://github.com/username/repo_name.git . Laden Sie es dann wie in einem Jupyter-Notebook mit der Zauberfunktion % load%load filename.py.
5
Aditya Mishra

Für den Fall, dass jemand anderes Interesse hat, Dateien/Pakete aus gdrive in ein Google Colab zu importieren. Das folgende Verfahren hat bei mir funktioniert:

1) Mounten Sie Ihr Google-Laufwerk in Google Colab:

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

2) Hängen Sie das Verzeichnis mit sys: an Ihren python Pfad an

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

Jetzt solltest du in der Lage sein, Sachen aus diesem Verzeichnis zu importieren!

1
a3VonG

Versuchen Sie es so:

Ich habe ein Paket namens Plant_seedlings. Das Paket wird in Google Drive gespeichert. Ich sollte dieses Paket in /usr/local/lib/python3.6/dist-packages/ kopieren.

!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

Sie können diese .py-Dateien auf das Google-Laufwerk hochladen und Colab die Verwendung erlauben:

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

Alle Ihre Dateien und Ordner im Stammverzeichnis befinden sich in drive.

1
Huyen

Ich stehe vor dem gleichen Problem. Nachdem ich zahlreiche Beiträge gelesen habe, möchte ich die folgende Lösung vorstellen, die ich letztendlich vielen anderen Methoden vorgezogen habe (z. B. Verwendung von urllib, httpimport, Klon von GitHub, Paketieren der Module für die Installation usw.). Die Lösung verwendet die Google Drive-API ( offizielles Dokument ) für die ordnungsgemäße Autorisierung.

Vorteile:

  1. Einfach und sicher (kein Code erforderlich, um Dateiausnahmen und/oder zusätzliche Berechtigungen zu verarbeiten)
  2. Moduldateien, die durch die Anmeldeinformationen des Google-Kontos geschützt sind (niemand kann sie anzeigen, abrufen oder bearbeiten)
  3. Sie steuern, was hochgeladen werden soll/auf was zugegriffen werden soll (Sie können den Zugriff jederzeit Datei für Datei ändern/widerrufen).
  4. Alles an einem Ort (Sie müssen sich nicht auf einen anderen Datei-Hosting-Service verlassen oder diesen verwalten)
  5. Freiheit, Moduldateien umzubenennen/zu verschieben (nicht pfadbasiert und der Notebook-Code Ihrer/anderer wird nicht beschädigt)

Schritte:

  1. Speichern Sie Ihre .py-Moduldatei in Google Drive - das sollten Sie haben, da Sie Colab bereits verwenden
  2. Rechtsklicke darauf, "Get shareable link", kopiere das Teil nach "id= "- Die von Google Drive zugewiesene Datei-ID
  3. Fügen Sie Ihrem Colab-Notizbuch die folgenden Codefragmente hinzu und führen Sie sie aus:
!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 :)

Randnotiz

Last but not least sollte ich den rsprünglichen Beitrag dieses Ansatzes gutschreiben. Dieser Beitrag könnte einen Tippfehler im Code haben, da er einen Fehler ausgelöst hat, als ich ihn ausprobiert habe. Nach mehr Lesen und Fehlerbehebung funktionierten meine obigen Code-Schnipsel (ab heute unter Colab VM OS: Linux 4.14.79)).

1
Frank Wang

Es ist Juni 2019. Vergewissern Sie sich, dass im Paket Python __init__.py Alle zugehörigen Dateien werden der Reihe nach importiert. Schieben Sie den Code auf Git oder verwenden Sie diesen Code .

zum Beispiel

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

Verwenden Sie den Paketnamen nicht in __init__.py Datei zum Importieren der Dateien.

in Google Colab,

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