首页 > 编程问答 >PermissionError: [Errno 13] 权限被拒绝: 生产服务器上的“/root/.u2net”

PermissionError: [Errno 13] 权限被拒绝: 生产服务器上的“/root/.u2net”

时间:2024-07-20 22:17:42浏览次数:9  
标签:python linux rembg

我正在使用 rembg,它可以在我的本地计算机上运行,​​但在生产中会引发错误。所以我认为这与linux操作系统目录权限有关。

这是服务器的完整日志:

Traceback (most recent call last):
  File "/home/airnet-technologies-test-bgrm/htdocs/test-bgrm.airnet-technologies.com/venv/lib/python3.10/site-packages/pooch/utils.py", line 249, in make_local_storage
    os.makedirs(path, exist_ok=True)
  File "/usr/lib/python3.10/os.py", line 225, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/root/.u2net'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/flask/app.py", line 1473, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/flask/app.py", line 882, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/flask/app.py", line 880, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/flask/app.py", line 865, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
  File "/home/path/to/dir/app.py", line 69, in remove_background
    output = remove(input)
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/rembg/bg.py", line 133, in remove
    session = new_session("u2net")
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/rembg/session_factory.py", line 50, in new_session
    pooch.retrieve(
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/pooch/core.py", line 224, in retrieve
    make_local_storage(path)
  File "/home/path/to/dir/venv/lib/python3.10/site-packages/pooch/utils.py", line 264, in make_local_storage
    raise PermissionError(" ".join(message)) from error
PermissionError: [Errno 13] Permission denied: '/root/.u2net' | Pooch could not create data cache folder '/root/.u2net'. Will not be able to download data files.
[pid: 219913|app: 0|req: 1/1] 182.180.15.244 () {44 vars in 853 bytes} [Sat Jul 20 14:06:45 2024] POST /remove_background => generated 265 bytes in 19 msecs (HTTP/1.1 500) 2 headers in 99 bytes (2 switches on core 0)

我已经尝试修改.u2net目录的权限,但它不起作用。


这个错误信息表示的应用程序试图在 /root/.u2net 目录下创建文件或文件夹,但它没有权限这样做。

原因分析:

  • 权限问题: /root 目录通常是 root 用户的 home 目录,而的应用程序很可能不是以 root 用户身份运行的。因此,它没有权限在该目录下创建文件或文件夹。
  • rembg 配置: rembg 库默认尝试在 /root/.u2net 目录下存储模型文件。

解决方法:

可以尝试以下几种方法来解决这个问题:

  1. 更改 rembg 数据目录:

  2. 可以通过设置 MODEL_CACHE_DIR 环境变量来更改 rembg 用于存储模型文件的目录。 python import os os.environ['MODEL_CACHE_DIR'] = '/path/to/your/data/directory' /path/to/your/data/directory 替换为希望使用的目录,并确保的应用程序对该目录具有写入权限。

  3. 修改目录权限 (不推荐):

  4. 可以尝试修改 /root/.u2net 目录的权限,以便的应用程序可以写入该目录。 但是,不建议这样做,因为这会带来安全风险。 bash sudo chown -R www-data:www-data /root/.u2net www-data 替换为的应用程序运行的用户。

  5. 以 root 用户身份运行应用程序 (非常不推荐):

  6. 强烈建议不要以 root 用户身份运行应用程序,因为这会带来严重的安全风险。 如果必须这样做,请确保了解风险并采取了必要的预防措施。

最佳实践:

  • 不要在 /root 目录下存储应用程序数据。 最好在 /var/lib /usr/local/share /opt 等目录下创建专门用于存储应用程序数据的目录。
  • 使用虚拟环境: 使用虚拟环境可以隔离应用程序的依赖项,并避免与系统上安装的其他 Python 包发生冲突。
  • 使用进程管理工具: 使用进程管理工具(例如 systemd 或 supervisord)来管理的应用程序,可以更轻松地控制应用程序的用户和权限。

希望这些信息能帮到!

标签:python,linux,rembg
From: 78772985

相关文章

  • 使用 selenium 在 python 中打开 chrome 中的链接
    通过此链接https://bancadatistatisticaoas.inail.it/analytics/saw.dll?Dashboard&PortalPath=%2Fshared%2FBDS%2F_portal%2FINF_Definiti_Industria_e_Servizi我需要单击“FCostruzioni”,然后单击F41COSTRUZIONIED埃迪菲西。这是我的代码,但它不起作用。我做错了......
  • 七大排序算法的Python实现
    七大排序算法的Python实现1.冒泡排序(BubbleSort)算法思想冒泡排序通过重复交换相邻的未按顺序排列的元素来排序数组。每次迭代都将最大的元素“冒泡”到数组的末尾。复杂度分析时间复杂度:O(n^2)空间复杂度:O(1)defbubble_sort(arr):n=len(arr)for......
  • python反序列化
    之前hgame中遇到python反序列化,这次正好借分享会来尽可能详细学习一下python反序列化基础知识什么是序列化?反序列化?在很多时候为了方便对象传输,我们往往会把一些内容转化成更方便存储、传输的形式。我们把“对象->字符串”的翻译过程称为“序列化”;相应地,把“字符串->对......
  • 我在 python 项目中不断收到“无法识别图像文件中的数据”错误
    我正在尝试向我的TK窗口添加一个图标,但我不断收到一条错误消息:Traceback(mostrecentcalllast):File"C:\Users\roger\source\repos\PythonApplication\PythonApplication.py",line7,in<module>windowIcon=tk.PhotoImage(file="C:/Users/roger/Downloa......
  • Python学习笔记41:游戏篇之外星人入侵(二)
    前言在上一篇文章,我们已经创建好了项目目录,在今天,我们主要编写入口模块的功能。mainmain.py模块是我们游戏程序的入口,所有我们需要在模块中编写游戏主启动以及主页面相关的代码。当前我们的main模块是这样的,这是我们创建项目时默认生成一些代码,接下来我们就要进行我们......
  • Python学习笔记39:进阶篇(二十八)pygame的使用之按键映射及按键失效问题解决
    前言基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。我们的下一步目标是完成pythoncrashcourse中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。私信我发送消息python资料,......
  • Python学习笔记40:游戏篇之外星人入侵(一)
    前言入门知识已经学完,常用标准库也了解了,pygame入门知识也学了,那么开始尝试小游戏的开发。当然这个小游戏属于比较简单的小游戏,复杂的游戏需要长时间的编写累计开发经验,同时也需要一定的时间才能编写出来。现在的话还是嫩了点。从基础的简单的开始,学习实践,慢慢的成长才......
  • Python学习笔记37:进阶篇(二十六)pygame的使用之输入处理
    前言基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。我们的下一步目标是完成pythoncrashcourse中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。私信我发送消息python资料,......
  • Python学习笔记38:进阶篇(二十七)pygame的使用之时间与帧数控制
    前言基础模块的知识通过这么长时间的学习已经有所了解,更加深入的话需要通过完成各种项目,在这个过程中逐渐学习,成长。我们的下一步目标是完成pythoncrashcourse中的外星人入侵项目,这是一个2D游戏项目。在这之前,我们先简单学习一下pygame模块。私信我发送消息python资料,......
  • 音频文件降噪及python示例
    操作系统:Windows10_x64Python版本:3.9.2noisereduce版本:3.0.2从事音频相关工作,大概率会碰到降噪问题,今天整理下之前学习音频文件降噪的笔记,并提供Audacity和python示例。我将从以下几个方面展开:noisereduce库介绍使用Audacity进行降噪使用fft滤波降噪使用noisereduce进......