有没有办法在.py文件中上传我的代码并将其导入colab代码单元格?
我找到的另一种方法是创建一个本地Jupyter笔记本,然后将其上传到Colab,这是唯一的方法吗?
答案 0 :(得分:36)
您可以先保存,然后导入。
from google.colab import files
src = list(files.upload().values())[0]
open('mylib.py','wb').write(src)
import mylib
更新(2018年11月):现在您可以通过
轻松上传答案 1 :(得分:10)
如果其他人有兴趣知道如何从Google colab内的gdrive导入文件/软件包。以下过程对我有用:
1)在google colab中安装google驱动器:
from google.colab import drive
drive.mount('/content/gdrive/')
2)使用sys将目录附加到您的python路径:
import sys
sys.path.append('/content/gdrive/mypythondirectory')
现在您应该可以从该目录导入内容了!
答案 2 :(得分:8)
%load filename.py
加载它一样。答案 3 :(得分: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中导入本地文件。我希望这有帮助
答案 4 :(得分:3)
我们可以这样做。
import sys
import os
py_file_location = "/content/drive/My Drive"
sys.path.append(os.path.abspath(py_file_location))
现在您可以将该模块作为模块导入该位置。
import whatever
答案 5 :(得分:1)
尝试这种方式:
我有一个名为plant_seedlings的包。该软件包存储在谷歌硬盘中。我应该做的是将此包复制到/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
答案 6 :(得分:1)
您可以将这些.py文件上传到Google云端硬盘并允许Colab使用它们:
!mkdir -p drive
!google-drive-ocamlfuse drive
根文件夹中的所有文件和文件夹都位于drive
。
答案 7 :(得分:1)
我面临同样的问题。阅读大量文章后,我想介绍以下解决方案,我最终选择了许多其他方法(例如,使用urllib
,httpimport
,从GitHub克隆,打包要安装的模块等)。该解决方案利用 Google云端硬盘API (official doc)进行适当的授权。
id=
”之后-Google云端硬盘分配的文件ID !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 OS上:Linux 4.14.79)。
答案 8 :(得分:0)
现在是2019年6月。
确保在Python包的__init__.py
中按顺序导入了所有相关文件。将代码推送到Git或使用this code。
例如,
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/
答案 9 :(得分:0)
以下是对我有用的步骤
来自 google.colab 导入驱动器 drive.mount('/content/drive')
导入系统 sys.path.insert(0,'/content/drive/My Drive/ColabNotebooks')
%cd 驱动器/MyDrive/ColabNotebooks %pwd
导入 my_module
如果您收到以下错误“Name Null is not defined”,请执行以下操作
5.1 从 colab 下载 my_module.ipynb 作为 my_module.py 文件(文件->下载 .py)
5.2 将 *.py 文件上传到 Google Drive 中的 drive/MyDrive/ColabNotebooks
5.3 import my_module 现在可以工作了
答案 10 :(得分:0)
这是我的过程:
import sys
sys.path.insert(0, '/content/drive/MyDrive/my_folder')
%cd /content/drive/MyDrive/my_folder
%pwd
现在,您可以轻松地使用 import my_module
从该路径导入模块
答案 11 :(得分:-1)
一种简单的方法是