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?
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
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
%load filename.py
.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!
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
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
.
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.
id=
"- Die von Google Drive zugewiesene Datei-ID!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 :)
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)).
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/