Jupyter notebook 在Google Colab中导入.py文件

Jupyter notebook 在Google Colab中导入.py文件,jupyter-notebook,ipython,google-colaboratory,Jupyter Notebook,Ipython,Google Colaboratory,有没有办法将我的代码上传到.py文件中并导入到colab代码单元格中 我发现的另一种方法是创建本地Jupyter笔记本,然后将其上载到Colab,这是唯一的方法吗?您可以先保存它,然后导入它 from google.colab import files src = list(files.upload().values())[0] open('mylib.py','wb').write(src) import mylib 更新(2018年11月):现在您可以通过 单击[>]打开左侧窗格 选择“

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


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

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

from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib
更新(2018年11月):现在您可以通过

  • 单击[>]打开左侧窗格
  • 选择“文件”选项卡
  • 单击[upload]并选择您的[mylib.py]
  • 导入mylib
更新(2019年10月):如果您不想每次都上传,可以将其存储在S3中并装载到Colab,如中所示

更新(2020年4月):现在你可以自动安装谷歌硬盘了。从驱动器复制比上传更容易

  • 在驱动器中存储
    mylib.py
  • 打开一个新的Colab
  • 打开(左)侧窗格,选择文件
  • 单击
    装载驱动器
    ,然后
    连接到谷歌驱动器
  • 通过
    复制它!cp-drive/MyDrive/mylib.py.
  • 导入mylib
尝试以下方法:

我有一个名为plant_苗木的包裹。该软件包存储在google drive中。我应该做的是在/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
  • 您可以使用google.colab.files中的upload()函数将本地文件上载到google colab
  • 如果github上有文件,则使用 !git克隆。然后就像在jupyter笔记本中一样,使用神奇的函数%load
    %load filename.py
    加载它

  • 根据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中导入本地文件。我希望这有帮助

    您可以将这些.py文件上载到Google drive,并允许Colab使用它们:

    !mkdir -p drive
    !google-drive-ocamlfuse drive
    
    根文件夹中的所有文件和文件夹将位于2019年6月的
    驱动器中。
    确保在Python包的
    \uuuu init\uuuu.py
    中按顺序导入所有相关文件。将代码推送到Git或use

    例如

    from .Boxes import *
    from .Circles import *
    from .Rectangles import *
    ...
    
    
    不要在
    \uuuu init\uuuu.py
    文件中使用包名来导入文件

    在Google colab中

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

    我也面临同样的问题。在阅读了大量的文章之后,我想介绍一下我最终选择的解决方案(例如使用
    urllib
    httpimport
    ,从GitHub克隆,打包模块以供安装等)。该解决方案利用Google Drive API()进行适当授权

    优势:
  • 简单安全(无需代码处理文件操作异常和/或额外授权)
  • 由Google帐户凭据保护的模块文件(其他人无法查看/获取/编辑)
  • 您可以控制上载/访问的内容(您可以随时逐个文件更改/撤销访问权限)
  • 一切都在一个地方(无需依赖或管理其他文件托管服务)
  • 可自由重命名/重新定位模块文件(不基于路径,不会破坏您/他人的笔记本代码)
  • 步骤:
  • 将您的.py模块文件保存到Google Drive-您应该已经有了它,因为您已经在使用Colab
  • 右键单击它,“获取可共享链接”,在“
    id=
    ”后复制该部分-谷歌硬盘分配的文件id
  • 向Colab笔记本添加并运行以下代码段:
  • !pip安装pydrive#包以使用Google Drive API-默认情况下未安装在Colab VM中
    从pydrive.auth导入GoogleAuth
    从pydrive.drive导入GoogleDrive
    
    从google.colab导入验证#其他必要的软件包
    从oauth2client.client导入Google凭据
    
    auth.authenticate_user()#在授权过程中遵循提示
    gauth=GoogleAuth()
    gauth.credentials=GoogleCredentials.get_应用程序_默认值()
    
    drive=GoogleDrive(高斯)
    your_module=drive.CreateFile({“id”:“your_module_file_id”})#“your_module_file_id”是可共享链接中“id=”之后的部分
    您的_module.GetContentFile(“您的_module_file_name.py”)#将.py模块文件保存到Colab VM
    导入您的_模块_文件_名称#准备导入。当然,不要包括“.py”部分:)
    
    旁注
    最后但并非最不重要的一点是,我应该赞扬这种方法的成功。那篇文章可能在代码中有一些输入错误,因为当我尝试它时,它触发了一个错误。经过更多的阅读和故障排除,我上面的代码片段成功了(截至今天,在Colab VM OS:Linux 4.14.79上)。

    以防其他人有兴趣知道如何在google Colab中从gdrive导入文件/包。以下程序对我有效:

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

    from google.colab import drive
    drive.mount('/content/gdrive/')
    
    import sys
    sys.path.append('/content/gdrive/mypythondirectory')
    
    2)使用sys:

    from google.colab import drive
    drive.mount('/content/gdrive/')
    
    import sys
    sys.path.append('/content/gdrive/mypythondirectory')
    
    现在您应该可以从该目录导入内容了

    一个简单的方法是

  • 输入 从google.colab导入文件 upload=文件。upload()
  • 复制代码
  • 贴在colab细胞中
  • 我们可以这样做

    import sys
    import os
    
    py_file_location = "/content/drive/My Drive"
    sys.path.append(os.path.abspath(py_file_location))
    
    现在,您可以将其作为笔记本中该位置的模块导入

    import whatever
    

    下面是对我有用的步骤

  • 在google colab中安装您的google驱动器 从google.colab导入驱动器 安装(“/content/drive”)

  • 插入目录 导入系统 sys.path.insert(0,“/content/drive/My drive/ColabNotebooks”)

  • 检查当前目录路径 %光驱/MyDrive/ColabNotebooks %pwd

  • 导入您的模块或文件 导入my_模块

  • 如果出现以下错误“未定义名称Null”,请执行以下操作

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

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

    5.3导入my_模块将正常工作n