如何使用修改后的库代码冻结我的代码?

时间:2013-12-23 03:34:30

标签: python qt unicode pyside py2exe

这可能是一个相当新的Python问题,但在几个谷歌搜索后找不到解决方案。

问题是,我遇到了一个关于unicode东西的库bug(在该库的 init .py文件中)。我知道如何修复它,但是当我用py2exe完成并冻结我的代码(用修改的 init .py导入该库)时,我仍然得到旧的结果(在 init .py但是控制台没有任何内容。但是,使用相同的代码,如果我在Python中直接运行我的代码(不冻结),我可以获得这些打印。

所以我的问题是当我冻结代码时会发生什么?更改后 init .py是否被编译或py2exe只使用库包附带的预编译字节码?

以下是更多信息: 我正在谈论的库是PySide(1.2.1),它是一个绑定到Qt的Python 2.当PySide尝试从字符串到unicode进行类型转换时,该错误出现在文件PySide _utils.py第47行。该字符串将是库dll的位置。当此位置(或路径)包含unicode字符(如中文字符)时,会发生此问题。 3.我的py2exe设置代码非常简单:使用compress 1冻结我的python代码并优化2

我知道我总是可以通过将我的冻结程序放在英文版本(例如系统程序文件目录)中来解决这个问题,但如果没有更好的解决方案出来,这只是我的最后选择,因为有些用户真的很喜欢'改变安装路径'选项。

提前致谢!


很抱歉没有提供详细的代码,请点击此处:

main.py:从简单的qt示例复制

from PySide.QtGui import QApplication, QLabel
app = QApplication([])
window = QLabel('Window from label')
window.show()
app.exec_()

py2exe setup.py:

setup(
    options={
        "py2exe": {
            "compressed": 1,
            "optimize": 2
        }
    },
    windows=[{"script": "main.py"}]
)

使用“python setup.py py2exe”(可能需要msvcp90.dll)冻结main.py将生成一个runnable exe文件和名为dist的文件夹下的许多其他东西。将该文件夹放在某个unicode路径下,如“D:\ English \”,然后运行exe将重现问题。

0 个答案:

没有答案