在 GoogleColab 中导入. py 文件

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

我发现的另一种方法是创建一个本地的木星笔记本然后上传到 Colab,这是唯一的方法吗?

242155 次浏览

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

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,如 这个要点所示

更新(2020年4月) : 现在您可以自动挂载您的谷歌驱动器。从 Drive 上复制比上传更容易。

  • 在驱动器中存储 mylib.py
  • 打开一个新的 Colab
  • 打开(左侧)面板,选择 Files视图
  • Mount Drive然后按 Connect to Google Drive
  • 通过 !cp drive/MyDrive/mylib.py .复制
  • import mylib

试试这样:

我有一个叫“植物幼苗”的包裹。包存储在谷歌驱动器。我应该做的是将这个包复制到/usr/local/lib/python3.6/dist-package/中。

!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
  1. 你可以使用 Google.colab.files中的 上载()函数将本地文件上传到 google colab
  2. 如果在 github 上有文件,那么使用 ! git 克隆 https://github.com/username/repo_name.git。然后就像在木星笔记本加载它使用神奇的功能 % 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 硬盘,并允许 Colab 使用它们:

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

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

现在是2019年6月。 请确保在 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/

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

优点:

  1. 简单而安全(不需要代码来处理文件操作异常和/或额外的授权)
  2. 模块文件由 Google 帐户凭证保护(其他人不能查看/接受/编辑它们)
  3. 您可以控制上传/访问内容(您可以在任何时候逐个文件地更改/撤销访问)
  4. 一切都在一个地方(不需要依赖或管理另一个网络硬盘)
  5. 可以自由地重命名/重定位模块文件(不是基于路径的,也不会破坏/其他人的笔记本代码)

步骤:

  1. 把你的. py 模块文件保存到 Google Drive-你应该有这个,因为你已经在使用 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 :)

边注

最后但并非最不重要的,我应该赞扬这种方法的 原始供稿人。这篇文章可能有一些输入错误的代码,因为它触发了一个错误,当我尝试它。经过更多的阅读和故障排除之后,我上面的代码片段起作用了(截至今天在 Colab VM OS: Linux 4.14.79上)。

如果其他人有兴趣知道如何从谷歌实验室内的 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')

现在您应该能够从那个目录导入东西了!

简单的办法是

  1. 输入 来自 google.colab 的导入文件 上传 = files.load ()
  2. 复制密码
  3. 乳房细胞浆

我们可以这么做。

import sys
import os


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

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

import whatever

下面是对我有用的步骤

  1. 安装您的谷歌驱动器在谷歌实验室

    来自 Google.colab 进口硬盘 Mount (’/content/drive’)

  2. 插入目录

    进口系统 Insert (0,’/content/Drive/My Drive/ColabNotebooks’)

  3. 检查工作目录

    % cd 驱动器/MyDrive/ColabNotebooks % pwd

  4. 导入模块或文件

    导入 my _ module

  5. 如果您得到以下错误“ Name Null is not Definition”,那么执行以下操作

    5.1从 colab 下载 my _ module. ipynb 作为 my _ module.py 文件(file-> Download. py)

    5.2上传 * . py 文件到 Google 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

我的流程是这样的:

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

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

您可以通过将驱动器挂载到 colab 并编写一些代码来放置 Python 文件的 id 来实现这一点 你可以在这里找到代码 从驱动器导入 python 文件到 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

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)`

在我的例子中,我试图使用的文件名为 client.py。这引发了一个冲突,因为在 /usr/local/lib/python3.7/dist-packages/中已经有一个名为 client的库。

我解决了这个问题,上传的 client.py文件到同一个谷歌驱动器文件夹中的 Colab 笔记本保存,并改变其名称为一些独特的,不会出现在 dist-packages文件夹。

在我的示例中,我将文件名更改为 dfsclient.py,然后使用

import dfsclient

然后我实现了卡迈勒的回答:

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

我通常是这样做的:

  1. 在目录中保存我的模块

  2. 定义模块的位置:

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

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

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

    import MyFile