如何将数据(文件或目录)粘贴到已安装的 snap 包中?

如何将数据(文件或目录)粘贴到已安装的 snap 包中?

ubuntu 20,Blender 通过 snap 包安装。默认位置(我设法找到)是

  • /快照/搅拌机/当前/2.xx/

我还安装了 Prism(VFX 管道工具)。此工具需要在 Python 中安装 PySide2 包(随 Blender 提供)。根据论坛的说法,我需要将 PySide2 目录复制到里面

  • blender/2.xx/python/lib/站点包

但我无法将其粘贴到 SNAPPED blender 中。(右键单击粘贴被禁用)。我已经尝试通过 root(仍然失败)“sudo nautilus”右键单击粘贴也被禁用。

有任何想法/建议吗?提前致谢。

答案1

该解决方案适用于 Blender 用户,但该方法可能适用于其他带有嵌入式 Python 控制台的程序。

在 Blender 的 Python 控制台(不是脚本编辑器)中输入:

import sys
print(sys.path)

输出将包括 Blender python 在搜索 python 模块时的所有文件夹。进口命令执行。在我的情况下,这包括 10 个文件夹,其中除一个之外都是 snap 子文件夹,因此它们是“只读”的“挂载”,这意味着即使使用 sudo 命令也无法写入/复制/粘贴到任何这些文件夹。例外是这些文件夹中的倒数第二个。它不是 snap 子文件夹(请参阅下面我复制的 print('sys.path') 的结果)。我差点错过了它,但一看到它,我就眼前一亮,因为我的策略是将所需的 Python 模块(*.py 文件)放在该文件夹中。我首先使用 PIP 将所需的 python 模块安装到我的系统(非 Blender)python 模块区域(不受 snap 保护),然后将其从那里复制到 /home/vic/.config/blender/2.92/scripts/addons/modules 文件夹(我必须创建此文件夹路径的最后三个级别)。起初它不起作用,但在关闭 Blender 并重新启动后,Blender 的 Python 找到了所需但之前不存在的 python 模块。

我希望这能帮助其他人,因为我花了很长时间才克服这个障碍。我预计 snap 的安全方法(使所有这些子目录都不可写)会带来好处,但我很高兴有人足够聪明,在 Blender 的嵌入式 Python 环境中允许至少一个后门来安装额外的 Python 模块。

sys.path
#~ ['/snap/blender/111/2.92/scripts/startup', 
'/snap/blender/111/2.92/scripts/modules', 
'/snap/blender/111/2.92/python/lib/python37.zip', 
'/snap/blender/111/2.92/python/lib/python3.7', 
'/snap/blender/111/2.92/python/lib/python3.7/lib-dynload',
'/snap/blender/111/2.92/python/lib/python3.7/site-packages', 
'/snap/blender/111/2.92/scripts/freestyle/modules', 
'/snap/blender/111/2.92/scripts/addons/modules', 
'/home/vic/.config/blender/2.92/scripts/addons/modules', 
'/snap/blender/111/2.92/scripts/addons']
#~ 

相关内容