Импорт файлов.py в Google Colab

Есть ли способ загрузить мой код в.py файлы и импортировать их в ячейки кода кода?

Другой способ, который я нашел, - создать локальный ноутбук Jupyter, а затем загрузить его в Colab, это единственный способ?

Ответ 1

Вы можете сначала сохранить его, а затем импортировать.

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

Обновление (ноябрь 2018 г.): теперь вы можете легко загружать файлы с помощью

  • нажмите на [>], чтобы открыть левую панель
  • выберите вкладку файла
  • нажмите [загрузить] и выберите свой [mylib.py]
  • импортировать mylib

Обновление (октябрь 2019 г.): если вы не хотите загружать каждый раз, вы можете сохранить его на S3 и смонтировать в Colab, как показано в этой главе

Ответ 2

  1. Вы можете загрузить локальные файлы в Google Colab с помощью функции upload() в google.colab.files.
  2. Если у вас есть файлы на github, клонируйте репозиторий, используя! Git clone https://github.com/username/repo_name.git. Затем, как в блокноте jupyter, загрузите его, используя волшебную функцию% load %load filename.py.

Ответ 3

Основываясь на ответе Коракота Чаоваванича, я создал функцию ниже, чтобы загрузить все файлы, необходимые в экземпляре 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. надеюсь, это поможет

Ответ 4

В случае, если кому-то еще интересно узнать, как импортировать файлы/пакеты из 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')

Теперь вы сможете импортировать вещи из этого каталога!

Ответ 5

Попробуйте так:

У меня есть пакет с именем 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

Ответ 6

Вы можете загрузить эти.py файлы на диск Google и разрешить Colab использовать их:

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

Все ваши файлы и папки в корневой папке будут на drive.

Ответ 7

Я сталкиваюсь с той же проблемой. После прочтения многочисленных постов я хотел бы представить следующее решение, которое я наконец выбрал для многих других методов (например, использовать urllib, httpimport, клонировать из GitHub, упаковать модули для установки и т.д.). В решении используется Google Drive API (официальный документ) для правильной авторизации.

Преимущества:

  1. Легко и безопасно (нет необходимости в коде для обработки исключений файловых операций и/или дополнительной авторизации)
  2. Файлы модуля защищены учетными данными учетной записи Google (никто другой не может их просматривать/принимать/редактировать)
  3. Вы контролируете, что загружать/получать доступ (вы можете изменять/отменять доступ в любое время для каждого файла отдельно)
  4. Все в одном месте (не нужно полагаться или управлять другим файлообменником)
  5. Свобода переименовывать/перемещать файлы модулей (не на основе пути и не нарушит ваш/другой код ноутбука)

Этапы:

  1. Сохраните файл модуля .py на Google Диске - он должен быть, так как вы уже используете Colab
  2. Щелкните по нему правой кнопкой мыши, "Получить общедоступную ссылку", скопируйте деталь после "id=" - идентификатора файла, назначенного Google Drive
  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: Linux 4.14.79).

Ответ 8

Это июнь 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/