Есть ли способ загрузить мой код в.py файлы и импортировать их в ячейки кода кода?
Другой способ, который я нашел, - создать локальный ноутбук Jupyter, а затем загрузить его в Colab, это единственный способ?
Есть ли способ загрузить мой код в.py файлы и импортировать их в ячейки кода кода?
Другой способ, который я нашел, - создать локальный ноутбук Jupyter, а затем загрузить его в Colab, это единственный способ?
Вы можете сначала сохранить его, а затем импортировать.
from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib
Обновление (ноябрь 2018 г.): теперь вы можете легко загружать файлы с помощью
Обновление (октябрь 2019 г.): если вы не хотите загружать каждый раз, вы можете сохранить его на S3 и смонтировать в Colab, как показано в этой главе
%load filename.py
.Основываясь на ответе Коракота Чаоваванича, я создал функцию ниже, чтобы загрузить все файлы, необходимые в экземпляре 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. надеюсь, это поможет
В случае, если кому-то еще интересно узнать, как импортировать файлы/пакеты из gdrive внутри гугл колаба. У меня сработала следующая процедура:
1) Смонтируйте свой диск Google в Google Colab:
from google.colab import drive
drive.mount('/content/gdrive/')
2) Добавьте каталог к вашему пути Python, используя sys:
import sys
sys.path.append('/content/gdrive/mypythondirectory')
Теперь вы сможете импортировать вещи из этого каталога!
Попробуйте так:
У меня есть пакет с именем 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
Вы можете загрузить эти.py файлы на диск Google и разрешить Colab использовать их:
!mkdir -p drive
!google-drive-ocamlfuse drive
Все ваши файлы и папки в корневой папке будут на drive
.
Я сталкиваюсь с той же проблемой. После прочтения многочисленных постов я хотел бы представить следующее решение, которое я наконец выбрал для многих других методов (например, использовать urllib
, httpimport
, клонировать из GitHub, упаковать модули для установки и т.д.). В решении используется Google Drive API (официальный документ) для правильной авторизации.
id=
" - идентификатора файла, назначенного Google Drive!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: Linux 4.14.79).
Это июнь 2019. Убедитесь, что в пакете Python __init__.py
все связанные файлы импортированы по порядку. Нажмите код для Git или используйте этот код.
например,
from .Boxes import *
from .Circles import *
from .Rectangles import *
...
Не используйте имя пакета в файле __init__.py
для импорта файлов.
в гугл колабе,
! rm -rf SorghumHeadDetection
! git clone https://github.com/user/amazing-repo-name/