在Google Colab中导入.py文件



有没有办法将我的代码上传到.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月(:现在您可以轻松地通过

上传
  • 单击[>]打开左窗格
  • 选择文件选项卡
  • 单击[上传],然后选择您的[mylib.py]
  • 导入mylib

更新(2019年10月(:如果您不想每次上传,可以将其存储在S3中并将其安装到Colab,如此GIST

所示

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

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

如果其他人有兴趣知道如何从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')

现在您应该能够从该目录中导入东西!

  1. 您可以使用 upload((函数在 google.colab.files.files
  2. 中使用 upload((函数上传到Google Colab
  3. 如果您在github上有文件,请使用!git克隆https://github.com/username/repo_name.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()

然后,您可以使用通常的"导入"语句将您的本地文件导入COLAB中。我希望这会有所帮助

我们可以这样做。

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

现在,您可以在该位置的笔记本中将其导入到笔记本中。

import whatever

我遇到了同样的问题。阅读了许多帖子后,我想介绍以下解决方案,我终于选择了许多其他方法(例如,使用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(。

尝试以下方式:

我有一个名为plant_seedlings的软件包。该软件包存储在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

以下是对我有用的步骤

  1. 将您的Google Drive安装在Google Colab

    来自Google.Colab Import Drivedrive.mount('/content/drive'(

  2. 插入目录

    导入系统sys.path.insert(0,/content/drive/my drive/colabnotebooks’(

  3. 检查当前目录路径

    %CD驱动器/mydrive/colabnotebooks%pwd

  4. 导入您的模块或文件

    导入my_module

  5. 如果您获得以下错误"未定义名称null",则执行以下

    5.1从colab下载my_module.ipynb as_module.py file(file-> download .py(

    5.2上传 *.py文件以驱动器/mydrive/colabnotebooks在Google驱动器

    5.3导入my_module现在可以工作

参考:https://medium.com/analytics-vidhya/importing-your-own-python-module-or-python-file-into-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轻松地从该路径导入模块给他们:

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

root文件夹中的所有文件和文件夹都将在drive中。

这是我定期这样做的方式:

  1. 将我的模块保存在目录中。在mymodules中说myfile.py

  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

是2019年6月。确保在Python软件包的__init__.py中按顺序导入所有相关文件。将代码推到git或使用此代码。

例如,

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/

您可以通过将驱动器安装到colab并编写一些代码来完成python文件的ID来做到这一点您可以在这里找到代码从驱动器到Colab

导入Python文件
    # 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文件上传到同一Google Drive文件夹中,将COLAB笔记本保存并更改为dist-packages文件夹中未显示的唯一内容。

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

import dfsclient

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

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

一种简单的方法是

  1. 输入从Google.Colab导入文件上传= files.upload((
  2. 复制代码
  3. 粘贴在Colab细胞中

最新更新