You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

TensorFlow环境下Jupyter Notebook启动内核遭遇PermissionError权限问题

解决Jupyter Notebook内核权限错误(TensorFlow环境验证场景)

我之前也碰到过一模一样的情况——搭好TensorFlow环境想通过Jupyter Notebook验证,结果创建新文件直接弹出内核错误,看报错信息是权限拒绝,没法写入runtime目录下的kernel配置文件。你的具体报错如下:

Traceback (most recent call last):
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\web.py", line 1699, in _execute
    result = await result
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\notebook\services\sessions\handlers.py", line 72, in post
    type=mtype))
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 735, in run
    value = future.result()
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 88, in create_session
    kernel_id = yield self.start_kernel_for_session(session_id, path, name, type, kernel_name)
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 735, in run
    value = future.result()
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\notebook\services\sessions\sessionmanager.py", line 101, in start_kernel_for_session
    self.kernel_manager.start_kernel(path=kernel_path, kernel_name=kernel_name)
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 735, in run
    value = future.result()
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\tornado\gen.py", line 209, in wrapper
    yielded = next(result)
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 168, in start_kernel
    super(MappingKernelManager, self).start_kernel(**kwargs)
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\jupyter_client\multikernelmanager.py", line 110, in start_kernel
    km.start_kernel(**kwargs)
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\jupyter_client\manager.py", line 240, in start_kernel
    self.write_connection_file()
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\jupyter_client\connect.py", line 547, in write_connection_file
    kernel_name=self.kernel_name
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\jupyter_client\connect.py", line 212, in write_connection_file
    with secure_write(fname) as f:
  File "D:\Anaconda3\envs\tensor36\lib\contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "D:\Anaconda3\envs\tensor36\lib\site-packages\jupyter_client\connect.py", line 102, in secure_write
    with os.fdopen(os.open(fname, open_flag, 0o600), mode) as f:
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\Huazhi\\AppData\\Roaming\\jupyter\\runtime\\kernel-c1e93dc8-b336-4fdd-a028-7c001460bc4f.json'

这本质是Windows的UAC权限限制导致的,Jupyter没有权限往默认的系统runtime目录写文件,给你几个实用的解决办法:

  • 临时快速解决:以管理员身份运行终端
    右键点击你用来启动Jupyter的终端(比如Anaconda Prompt),选择以管理员身份运行,先激活你的TensorFlow环境:conda activate tensor36,再输入jupyter notebook启动,基本能立刻解决问题。

  • 永久解决:修改runtime目录权限
    找到C:\\Users\\Huazhi\\AppData\\Roaming\\jupyter\\runtime文件夹,右键→属性安全选项卡,找到你当前的用户账号,点击编辑,给它添加完全控制的权限,应用设置后重启Jupyter,以后就不会再碰到这个权限问题了。

  • 备选方案:指定自定义runtime目录
    如果不想修改系统目录权限,可以自己在TensorFlow环境文件夹里新建一个目录,比如D:\Anaconda3\envs\tensor36\jupyter_runtime,然后启动Jupyter时加上参数:

    jupyter notebook --runtime-dir D:\Anaconda3\envs\tensor36\jupyter_runtime
    

    这样Jupyter会把内核配置文件写到你指定的目录里,完全避开系统权限限制。

内容的提问来源于stack exchange,提问作者Antonin_zhz

火山引擎 最新活动