代码之家  ›  专栏  ›  技术社区  ›  Reham M Samir

正在导入。Google Colab中的py文件

  •  135
  • Reham M Samir  · 技术社区  · 6 年前

    有没有办法上传我的代码。复制文件并将其导入colab代码单元?

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

    16 回复  |  直到 4 年前
        1
  •  148
  •   korakot    4 年前

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

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

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

    • 单击[>]打开左侧窗格
    • 选择文件选项卡
    • 单击[上载]并选择您的[mylib.py]
    • 导入mylib

    更新(2019年10月):如果不想每次都上传,可以将其存储在S3中并装载到Colab,如所示 this gist

    更新(2020年4月):现在您可以自动安装Google Drive。从驱动器中复制比上载更容易。

    • 百货商店 mylib.py 在您的驱动器中
    • 打开新Colab
    • 打开(左侧)侧窗格,选择 Files 看法
    • 点击 Mount Drive 然后 Connect to Google Drive
    • 复制人 !cp drive/MyDrive/mylib.py .
    • import mylib
        2
  •  98
  •   a3VonG    5 年前

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

    1) 在google colab中装载您的google drive:

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

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

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

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

        3
  •  19
  •   Aditya Mishra    6 年前
    1. 您可以使用将本地文件上载到google colab 上载() 中的函数 谷歌。科拉布。文件夹
    2. 如果github上有文件,请使用 !git克隆 https://github.com/username/repo_name.git . 然后就像在jupyter笔记本中一样,使用魔术功能加载它 %负载 %load filename.py .
        4
  •  13
  •   Flint Joe    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中导入本地文件。我希望这有帮助

        5
  •  5
  •   user13415013 user13415013    4 年前

    我们可以这样做。

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

    现在,您可以将其作为笔记本中该位置的模块导入。

    import whatever
    
        6
  •  4
  •   Frank Wang    5 年前

    我也面临同样的问题。在阅读了许多帖子之后,我想介绍一下我最终选择的解决方案,而不是其他许多方法(例如使用 urllib , httpimport ,从GitHub克隆,打包模块以便安装等)。解决方案利用 Google Drive API ( official doc )以获得适当授权。

    优势:

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

    步骤:

    1. 保存您的。py模块文件到Google驱动器-您应该拥有它,因为您已经在使用Colab
    2. 右键单击“获取可共享链接”,然后复制部件“ id= “-Google Drive分配的文件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操作系统上:Linux 4.14.79)。

        7
  •  3
  •   Feng    6 年前

    请尝试以下方法:

    我有一个名为plant\u幼苗的包裹。该软件包存储在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
    
        8
  •  2
  •   Kamal    3 年前

    以下是我的流程:

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

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

        9
  •  1
  •   Huyen    6 年前

    你可以上传这些。将文件复制到Google drive,并允许Colab使用这些文件:

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

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

        10
  •  1
  •   viraj ghorpade    3 年前

    以下是对我有效的步骤

    1. 在google colab中装载您的google drive

      来自谷歌。colab导入驱动器 驾驶装载(“/内容/驱动器”)

    2. 插入目录

      导入系统 系统。路径插入(0,/内容/驱动器/我的驱动器/ColaNotebook)

    3. 检查当前目录路径

      %cd驱动器/MyDrive/ColaNotebook %pwd公司

    4. 导入模块或文件

      导入my\u模块

    5. 如果出现以下错误“未定义Name Null”,请执行以下操作

      5.1下载my\u模块。colab的ipynb作为my\u模块。py文件(文件->下载.py)

      5.2上传*。Google drive中的py-file-to-drive/MyDrive/ColabNotebooks

      5.3导入my\u模块现在可以工作了

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

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

        11
  •  0
  •   Netro    5 年前

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

    例如,

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

    在中不使用包名称 __init\uuuu。py公司 用于导入文件的文件。

    在Google colab中,

    ! rm -rf SorghumHeadDetection
    ! git clone https://github.com/user/amazing-repo-name/
    
        12
  •  0
  •   basma hajjaj    3 年前

    可以通过将驱动器装载到colab并编写一些代码来放置python文件的id来实现这一点 您可以在此处找到代码 importing python file from drive to colab

        # Code to read file into colaboratory:
         !pip install -U -q PyDrive
    from pydrive.auth import GoogleAuth
    from pydrive.drive import GoogleDrive
    from google.colab import auth
    from oauth2client.client import GoogleCredentials
    
    
    #Autheticate E-Mail ID
    auth.authenticate_user()
    gauth = GoogleAuth()
    gauth.credentials = GoogleCredentials.get_application_default()
    drive = GoogleDrive(gauth)
    
    #2.1 Get the file
    your_module = drive.CreateFile({"id": 'write your file id here'})  # "your_module_file_id" is the part after "id=" in the shareable link
    your_module.GetContentFile("write the file name here")          # Save the .py module file to Colab VM
    
    import file_name   
    from file_name import anything    #as classes or functions from your file
    
        13
  •  0
  •   Jemma_Zhou    3 年前

    os.listdir 可用于查看目录中的所有文件

    from google.colab import drive
    drive.mount("/content/drive")
    
    import os
    path="/content/drive/My Drive/Colab Notebooks"
    os.chdir(path)
    os.listdir(path)`
    
        14
  •  0
  •   Haddock-san    3 年前

    在我的情况下,我试图使用的文件被调用 client.py . 这引发了冲突,因为已经有一个名为 client 在里面 /usr/local/lib/python3.7/dist-packages/ .

    我通过上传 客户py公司 将文件保存到保存Colab笔记本的同一Google Drive文件夹中,并将其名称更改为在 dist-packages 文件夹

    在我的情况下,我将文件名更改为 dfsclient.py 然后用

    import dfsclient

    然后我实现了卡马尔的答案:

    import sys 
    sys.path.insert(0, '/content/drive/MyDrive/my_folder')
    
        15
  •  0
  •   ouflak    2 年前

    我经常这样做:

    1. 将我的模块保存在目录中。说我的文件。MyModules中的py

    2. 定义我的模块的位置:

      path_m = '/content/drive/MyDrive/Colab Notebooks/MyModules/'

    3. 然后我将路径添加到sys。路径:

      import sys
      
      sys.path.insert(0,path_m)
      
    4. import the module into my Jupyter/Google Colab notebook.

      import MyFile

        16
  •  -2
  •   luca.vercelli    4 年前

    一个简单的方法是

    1. 输入 来自谷歌。colab导入文件 上载=文件。上载()
    2. 复制代码
    3. 粘贴在colab单元格中