scikit-learn joblib:导入权限错误,串行模式下 运行

scikit-learn joblib: Permission error importing, run in Serial mode

当我尝试从脚本或 python -c 'import joblib' 导入 joblib 时出现以下权限错误:

/usr/local/lib/python2.7/dist-packages/joblib//joblib_multiprocessing_helpers.py:29: UserWarning: [Errno 13] Permission denied.  joblib will operate in serial mode
      warnings.warn('%s.  joblib will operate in serial mode' % (e,))

因此,即使每个用户和组都对 joblib 目录具有完整的 rwx 权限,它也会给我一个权限错误。如何确定导入时在哪个目录 joblib 上进行写权限检查?为什么它甚至在我指定写操作之前就进行检查?

在joblib源码中找了一个:

问题是我的系统没有启用信号量:Joblib 检查 multiprocessing.Semaphore() 结果发现只有 root 对 /dev/shm 中的共享内存有 read/write 权限.根据 this answer 通过将以下内容添加到您的 /etc/fstab 中永久设置正确的权限(即使在重新启动后)来修复它:

none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0 然后重新挂载 mount /dev/shm -o remount