有没有办法将我的代码上传到.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')
现在您应该能够从该目录中导入东西!
- 您可以使用 upload((函数在 google.colab.files.files 中使用 upload((函数上传到Google Colab
- 如果您在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
我遇到了同样的问题。阅读了许多帖子后,我想介绍以下解决方案,我终于选择了许多其他方法(例如,使用urllib
,httpimport
,Github的克隆,包装安装模块等(。解决方案利用 Google Drive API (官方文档(进行适当的授权。
优点:
- 简单安全(无需代码来处理文件操作例外和/或其他授权(
- 由Google帐户凭据保护的模块文件(没有其他人可以查看/采用/编辑它们(
- 您控制要上传/访问的内容(您可以随时逐文件更改/撤销访问(
- 一个地方的一切(无需依靠或管理另一个文件托管服务(
- 自由重命名/重新分配模块文件(不是基于路径,不会打破您/其他笔记本电脑代码(
步骤:
- 将.py模块文件保存到Google Drive - 您应该拥有它,因为您已经在使用COLAB
- 右键单击它,"获取可共享链接",在"
id=
"之后复制零件 - Google Drive分配的文件ID - 将以下代码片段添加到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
以下是对我有用的步骤
-
将您的Google Drive安装在Google Colab
来自Google.Colab Import Drivedrive.mount('/content/drive'(
-
插入目录
导入系统sys.path.insert(0,/content/drive/my drive/colabnotebooks’(
-
检查当前目录路径
%CD驱动器/mydrive/colabnotebooks%pwd
-
导入您的模块或文件
导入my_module
-
如果您获得以下错误"未定义名称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
中。
这是我定期这样做的方式:
-
将我的模块保存在目录中。在mymodules中说myfile.py
-
定义我的模块的位置:
path_m = '/content/drive/MyDrive/Colab Notebooks/MyModules/'
-
然后,我将路径添加到sys.path:
import sys sys.path.insert(0,path_m)
-
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')
一种简单的方法是
- 输入从Google.Colab导入文件上传= files.upload((
- 复制代码
- 粘贴在Colab细胞中