Импорт файлов.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
- Вы можете загрузить локальные файлы в Google Colab с помощью функции upload() в google.colab.files.
- Если у вас есть файлы на 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 (официальный документ) для правильной авторизации.
Преимущества:
- Легко и безопасно (нет необходимости в коде для обработки исключений файловых операций и/или дополнительной авторизации)
- Файлы модуля защищены учетными данными учетной записи Google (никто другой не может их просматривать/принимать/редактировать)
- Вы контролируете, что загружать/получать доступ (вы можете изменять/отменять доступ в любое время для каждого файла отдельно)
- Все в одном месте (не нужно полагаться или управлять другим файлообменником)
- Свобода переименовывать/перемещать файлы модулей (не на основе пути и не нарушит ваш/другой код ноутбука)
Этапы:
- Сохраните файл модуля .py на Google Диске - он должен быть, так как вы уже используете Colab
- Щелкните по нему правой кнопкой мыши, "Получить общедоступную ссылку", скопируйте деталь после "
id=
" - идентификатора файла, назначенного Google Drive
- .Добавьте и запустите следующие фрагменты кода в своей записной книжке 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/