在Google Colab中导入.py文件

时间:2018-02-21 11:47:20

标签: ipython jupyter-notebook google-colaboratory

有没有办法在.py文件中上传我的代码并将其导入colab代码单元格?

我找到的另一种方法是创建一个本地Jupyter笔记本,然后将其上传到Colab,这是唯一的方法吗?

12 个答案:

答案 0 :(得分:36)

您可以先保存,然后导入。

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

更新(2018年11月):现在您可以通过

轻松上传
  • 点击[>]以打开左侧窗格
  • 选择文件标签
  • 点击[上传]并选择[mylib.py]
  • import mylib

答案 1 :(得分:10)

如果其他人有兴趣知道如何从Google colab内的gdrive导入文件/软件包。以下过程对我有用:

1)在google colab中安装google驱动器:

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

2)使用sys将目录附加到您的python路径:

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

现在您应该可以从该目录导入内容了!

答案 2 :(得分:8)

  1. 您可以使用 google.colab.files
  2. 中的 upload()功能将本地文件上传到google colab
  3. 如果你在github上有文件,那么使用克隆repo !git clone https://github.com/username/repo_name.git。然后就像在jupyter笔记本中使用魔术函数%load %load filename.py加载它一样。

答案 3 :(得分:6)

根据Korakot Chaovavanich的回答,我创建了下面的函数来下载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 :(得分:3)

我们可以这样做。

import sys
import os

py_file_location = "/content/drive/My Drive"
sys.path.append(os.path.abspath(py_file_location))

现在您可以将该模块作为模块导入该位置。

import whatever

答案 5 :(得分:1)

尝试这种方式:

我有一个名为plant_seedlings的包。该软件包存储在谷歌硬盘中。我应该做的是将此包复制到/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 :(得分:1)

您可以将这些.py文件上传到Google云端硬盘并允许Colab使用它们:

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

根文件夹中的所有文件和文件夹都位于drive

答案 7 :(得分:1)

我面临同样的问题。阅读大量文章后,我想介绍以下解决方案,我最终选择了许多其他方法(例如,使用urllibhttpimport,从GitHub克隆,打包要安装的模块等)。该解决方案利用 Google云端硬盘API official doc)进行适当的授权。

优势:

  1. 简单安全(无需代码来处理文件操作异常和/或其他授权)
  2. 受Google帐户凭据保护的模块文件(没有其他人可以查看/获取/编辑它们)
  3. 您可以控制上传/访问的内容(可以随时在逐个文件的基础上更改/撤消访问权限)
  4. 一切都在一个地方(无需依赖或管理另一种文件托管服务)
  5. 可以重命名/重定位模块文件(不是基于路径的,不会破坏您/他人的笔记本代码)

步骤:

  1. 将您的.py模块文件保存到Google云端硬盘-您应该已经拥有该文件,因为您已经在使用Colab
  2. 右键单击它,“获取共享链接”,将部分复制到“ id=”之后-Google云端硬盘分配的文件ID
  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 :)

旁注

最后但并非最不重要的一点,我应该相信这种方法的original contributor。该帖子可能在代码中有错别字,因为我尝试时触发了错误。经过更多的阅读和故障排除之后,我的上述代码片段开始运行(截至今天,在Colab VM OS上:Linux 4.14.79)。

答案 8 :(得分:0)

现在是2019年6月。 确保在Python包的__init__.py中按顺序导入了所有相关文件。将代码推送到Git或使用this code

例如,

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

请勿使用__init__.py文件中的软件包名称来导入文件。

在Google colab中,

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

答案 9 :(得分:0)

以下是对我有用的步骤

  1. 在 google colab 中安装您的谷歌驱动器

    来自 google.colab 导入驱动器 drive.mount('/content/drive')

  2. 插入目录

    导入系统 sys.path.insert(0,'/content/drive/My Drive/ColabNotebooks')

  3. 检查当前目录路径

    %cd 驱动器/MyDrive/ColabNotebooks %pwd

  4. 导入您的模块或文件

    导入 my_module

  5. 如果您收到以下错误“Name Null is not defined”,请执行以下操作

    5.1 从 colab 下载 my_module.ipynb 作为 my_module.py 文件(文件->下载 .py)

    5.2 将 *.py 文件上传到 Google Drive 中的 drive/MyDrive/ColabNotebooks

    5.3 import my_module 现在可以工作了

参考: https://medium.com/analytics-vidhya/importing-your-own-python-module-or-python-file-into-colab-3e365f0a35ec

https://github.com/googlecolab/colabtools/issues/1358

答案 10 :(得分:0)

这是我的过程:

import sys 
sys.path.insert(0, '/content/drive/MyDrive/my_folder')
%cd /content/drive/MyDrive/my_folder
%pwd

现在,您可以轻松地使用 import my_module 从该路径导入模块

答案 11 :(得分:-1)

一种简单的方法是

  1. 输入 从google.colab导入文件 已上载= files.upload()
  2. 复制代码
  3. 粘贴在colab细胞中