gpt4 book ai didi

python - Pygame 和 cx_freeze : segmentation fault

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:26 31 4
gpt4 key购买 nike

我正在使用 ubuntu 和 python 2.6

我发现我的系统上已经安装了 cx freeze(有没有办法检查它是否与我的 Python 版本兼容?)

但是,我有一个小的 pygame 脚本(导入另一个模块和一些图像),我想编译它;

我将此文件用作 setup.py:

#!/usr/bin/python

from cx_Freeze import setup, Executable

setup(
name = 'Example',
version = '0.1',
description='hi',
executables = [Executable('/home/antonio/Python 26 save/opt/example.py')]
)

如果我运行生成的可执行文件,(通过终端)我得到这个错误:

Fatal Python error: (pygame parachute) Segmentation Fault
Aborted

我该怎么办?我已经搜索过,但我发现的例子很少,而且我没有在谷歌结果中看到这个错误

当然在使用 cx freeze 之前程序运行完美

最佳答案

我在使用 python 2.7 时遇到了类似的问题。我在自己的程序中发现了导致此段错误的两个原因,但我只有其中一个的解决方案。

原因1.没有路径初始化字体,即调用:

pygame.font.Font(None, font_size)

在这种情况下,valgrind报告地址 0x0 in ??? 中的无效读取在 pygame.font.so

我猜这是因为 None 被转换为 NULL 指针,然后假定它是一个有效的 const char* 字符串。

解决此问题的方法是始终提供字体的有效路径。

原因 2. 渲染字体中的 unicode 字符

pygame.font.Font("data/DejaVuSans.ttf", 14).render(u'\u2654')

valgrind 报告在 libpython2.7.so.1.0 中的 PyString_AsString 中读取无效

很抱歉,我对此没有解决方案。

附言:我刚刚发现另一个与 unicode 相关(但与 pygame 无关)的 cxfreeze 问题原因。

print u'\u2654'

在 python 解释器中会打印出一个国王(棋子),但是当使用 cxfreeze 编译脚本时,出现以下错误(不是段错误):

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2654' in position 0: ordinal not in range(128)

如果您调用:

,您也会在 python 解释器中遇到此错误:
print str(u'\u2654')

这似乎表明 cxfreeze 假设字符串始终是 ascii 字符串。

关于python - Pygame 和 cx_freeze : segmentation fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693781/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com