julia - 在谷歌 colab 中使用 IJulia 时如何挂载谷歌驱动器?
问题描述
我想让 Julia 在 colab 工作。我想在使用 IJulia 时像在 IPython 中一样将 gdrive 挂载到 colab。在 ipython 我可以这样做:
from google.colab import drive
drive.mount('/content/gdrive')
我试过以下:
using PyCall
clb = pyimport("google")
clb.colab.drive.mount("/content/gdrive")
------------------------------------------------------------------------------------
Warning: Password input may be echoed.
Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=...
Enter your authorization code:
PyError ($(Expr(:escape, :(ccall(#= /root/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:44 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) <class 'EOFError'>
EOFError()
File "/usr/local/lib/python3.6/dist-packages/google/colab/drive.py", line 234, in mount
fifo_file.write(_getpass.getpass(auth_prompt) + '\n')
File "/usr/lib/python3.6/getpass.py", line 91, in unix_getpass
passwd = fallback_getpass(prompt, stream)
File "/usr/lib/python3.6/getpass.py", line 126, in fallback_getpass
return _raw_input(prompt, stream)
File "/usr/lib/python3.6/getpass.py", line 148, in _raw_input
raise EOFError
Stacktrace:
[1] pyerr_check at /root/.julia/packages/PyCall/ttONZ/src/exception.jl:60 [inlined]
[2] pyerr_check at /root/.julia/packages/PyCall/ttONZ/src/exception.jl:64 [inlined]
[3] macro expansion at /root/.julia/packages/PyCall/ttONZ/src/exception.jl:84 [inlined]
[4] __pycall!(::PyObject, ::Ptr{PyCall.PyObject_struct}, ::PyObject, ::Ptr{Nothing}) at /root/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:44
[5] _pycall!(::PyObject, ::PyObject, ::Tuple{String}, ::Int64, ::Ptr{Nothing}) at /root/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:29
[6] #call#111 at /root/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:11 [inlined]
[7] (::PyObject)(::String) at /root/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:89
[8] top-level scope at In[9]:3
using PyCall
py"""
from google.colab import drive
drive.mount('/content/gdrive')
"""
cd("/content/gdrive/My\ Drive")
------------------------------------------------------------------------------------
Warning: Password input may be echoed.
Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=...
Enter your authorization code:
PyError ($(Expr(:escape, :(ccall(#= /root/.julia/packages/PyCall/ttONZ/src/pyeval.jl:39 =# @pysym(:PyEval_EvalCode), PyPtr, (PyPtr, PyPtr, PyPtr), o, globals, locals))))) <class 'EOFError'>
EOFError()
File "/root/.julia/packages/PyCall/ttONZ/src/pyeval.jl", line 2, in <module>
const Py_file_input = 257
File "/usr/local/lib/python3.6/dist-packages/google/colab/drive.py", line 234, in mount
fifo_file.write(_getpass.getpass(auth_prompt) + '\n')
File "/usr/lib/python3.6/getpass.py", line 91, in unix_getpass
passwd = fallback_getpass(prompt, stream)
File "/usr/lib/python3.6/getpass.py", line 126, in fallback_getpass
return _raw_input(prompt, stream)
File "/usr/lib/python3.6/getpass.py", line 148, in _raw_input
raise EOFError
Stacktrace:
[1] pyerr_check at /root/.julia/packages/PyCall/ttONZ/src/exception.jl:60 [inlined]
[2] pyerr_check at /root/.julia/packages/PyCall/ttONZ/src/exception.jl:64 [inlined]
[3] macro expansion at /root/.julia/packages/PyCall/ttONZ/src/exception.jl:84 [inlined]
[4] pyeval_(::String, ::PyDict{String,PyObject,true}, ::PyDict{String,PyObject,true}, ::Int64, ::String) at /root/.julia/packages/PyCall/ttONZ/src/pyeval.jl:39
[5] top-level scope at /root/.julia/packages/PyCall/ttONZ/src/pyeval.jl:232
[6] top-level scope at In[10]:2
两者都没有工作。
解决方案
实现此目的的一种方法是在安装 Julia 之前安装 google 驱动器,默认情况下Runtime type
是 Python,通过运行:
from google.colab import drive
drive.mount('/content/gdrive')
这样,即使Runtime type
更改为 Julia,google 驱动器仍会保持挂载状态,直到您更改Hardware acceleration
或会话丢失。
推荐阅读
- excel - 如何在 Excel 中将 12 小时格式的时间转换为 24 小时格式
- stream - 如何为 futures::Stream 编写 len 方法?
- python-3.x - 如何从 Python 中的函数获取输入并在 tkinter GUI 中打印?
- django - 如何在 django 应用程序中创建分层 url?
- angular - 角度列表全部或根据类别
- robotframework - RobotFramework:1 个测试用例,但有几个结果。如何应对?
- excel - 根据文本框值自动化电子邮件消息文本
- reactjs - MIcrosoft API 获取日历事件描述并适当显示
- javascript - 从Javascript中的YYYY-DD-MM字符串中提取日、月、年
- r - ggplot2 对象上的 ggplotly 函数崩溃 R & RStudio