标签: pyz

从PYZ中的虚拟目录获取GtkBuilder小部件的文本消息目录

是否有一个既定的方法嵌入的gettext locale/xy/LC_MESSAGES/*PYZ捆绑?特别是让Gtks自动小部件翻译 ZIP存档中获取它们.

对于其他嵌入式资源pkgutil.get_detainspect/ get_source工作得足够好.但系统 Python gettext API依赖于bindtextdomain提供一个简单的旧localedir; 没有资源或字符串等

所以我无法设计一个可行的甚至是远程实用的解决方法:

  1. 虚拟gvfs/ gio路径
    现在使用archive://file%3A%2F%2Fmypkg.pyz%2Fmessages%2FIRI可以直接从zip读取其他文件.但是glibs g_dgettext仍然只是系统库的一个薄包装器.因此,任何此类URL都不能用作localedir.

  2. 部分提取拉链
    这就是我认为PyInstaller的工作方式.但是将.pyz应用程序捆绑在一起当然有点荒谬,只是在每次调用时都预先提取.

  3. Userland gettext .mo/ .poextraction
    现在手动读取消息目录或者只是使用普通的dicts来代替它.但仅适用于应用程序中的字符串.再也没办法让Gtk/GtkBuilder暗中接他们了.
    因此,我不得不手动遍历整个小部件树,标签,文本,内部小部件,markup_text等.可能,但是meh.

  4. FUSE安装
    这将是超薄的.但是当然,拉链内容可以被访问gvfs-mount等等.就好像是某种记忆力.而且我怀疑它会保持可靠性,例如两个应用程序实例正在运行,或者之前的不正确终止.(就像dunno一样,由于系统库,比如gettext,在一个脆弱的拉链保险丝点上磕磕绊绊......)

  5. 用于翻译的Gtk信号/事件(?)
    我发现蹲下,所以我有点确定在Gtk/PyGtk/GI中没有替代机制来进行小部件翻译.Gtk/Builder期望并 gettext相关联.

是否有更可靠的方法?

python pygtk glib gettext pyz

26
推荐指数
1
解决办法
451
查看次数

.PYZ 文件扩展名

我已经搜索过,但找不到读取 PYZ 文件的方法。我知道它们是一种 zip 文件,但我无法通过 zip 程序读取它们。

这是参考另一个问题,我需要在尝试构建 exe 时访问由 pyinstaller 创建的目录结构中的 _init__ 文件。在此过程中,会创建一个 out00-PYZ.pyz 文件,错误引用了 PYZ 内部的文件。

这里的线程描述了如何从 EXE 反编译以获取 PYC 文件,但不适用于 PYZ 文件。

肯定有办法破解这个常用的pythonic文件吗?

提前谢谢了。

ctypes runtime-error pyinstaller pyz

5
推荐指数
1
解决办法
2995
查看次数

标签 统计

pyz ×2

ctypes ×1

gettext ×1

glib ×1

pygtk ×1

pyinstaller ×1

python ×1

runtime-error ×1