2011-04-17 2 views
2

Я использую Ubuntu и питон 2,6Pygame и 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 

что я должен делать? Я искал, но я нашел очень мало примеров, и я не видел эту ошибку на Google Результатов

пса конечно программа была запущена совершенно перед использованием ого замораживать

+0

У меня тоже возникает эта проблема, я получаю доступ к трем изображениям, а затем к тем segfaults, как странно. – beary605

ответ

1

Я получаю подобную проблему с помощью Python 2.7. Я нашел две причины этой ошибки сегментации в моей собственной программе, но у меня есть только одно решение.

Причина 1. Инициирование шрифты без пути, т.е. вызова:

pygame.font.Font(None, font_size) 

В этом случае valgrind сообщает недопустимое читать по адресу 0x0 в ??? in pygame.font.so

Я бы предположил, что это потому, что None преобразуется в указатель NULL, который, как предполагается, принимает, является допустимой строкой const char *.

Исправить эту проблему - всегда указывать допустимый путь к шрифту.

Причина символы 2. Предоставление Юникода в шрифтах

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

Valgrind сообщает недопустимые читать в PyString_AsString в libpython2.7.so.1.0

Мне жаль говорить, что я не имею решение для этого.

PS: Я только что нашел связанную с unicode (но не связанную с pygame) проблему с cxfreeze.

print u'\u2654' 

В питона интерпретатор напечатает король (шахматная фигура), но когда скрипт скомпилирован с cxfreeze, я получаю следующее сообщение об ошибке (не ошибка сегментации):

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

Вы также получить эту ошибку в интерпретатор питона, если вы звоните по телефону:

print str(u'\u2654') 

Это показывает, что cxfreeze берет на себя строки всегда ASCII строки.

+0

, который сработал! Ну, после всего этого времени я потерял интерес к проекту, но все же! Спасибо ;-) – Ant

0

ли вы установить любые параметры оптимизации при замораживании сценарий? Я не слишком уверен, что он делает это, но может быть, это неправильное изменение переменной в ссылке. Опять же, я не эксперт в cx_freeze, но мое решение будет обновляться. У вас есть последняя версия (cx_freeze)?

+0

да, у меня есть dowbloaded последняя версия cx freeze, и я не устанавливаю никакой оптимизации. Я просто запускаю python setup.py build ' – Ant

0

Была ли у вас ошибка Google (http://www.google.com/search? & q = Fatal% 20Python% 20error% 3A% 20% 28pygame% 20parachute% 29% 20Segmentation% 20Fault) и проверьте различные сообщения сообщают о той же ошибке?

E.g.

+0

да, я сделал..Я прочитал их al, но не нашел любые решения. Моя проблема возникает только тогда, когда я скомпилирую программу с помощью cx freeze, а не раньше .. – Ant

0

У меня такая же ошибка, и я думаю, что нашел решение. Я использую

pygame.font.SysFont(None,25) 

Но вместо передачи None аргумент следует использовать шрифты в вашей системе. У меня есть машина Windows, поэтому я не заменил ни одного шрифта, который имеет моя система. Поэтому я заменил его:

pygame.font.SysFont("comicsansms",25) 

Как вы можете видеть, что я не заменил None с comicsansms который предустанавливается шрифтов на Windows PC Надеюсь, что это работает!

0

pygame.font.SysFont(FONT_NAME, FONT_SIZE).

+0

Добро пожаловать в StackOverflow! Кодовые ответы несколько обескуражены. Не могли бы вы отредактировать свой ответ, чтобы объяснить, как он исправляет segfault? – JETM

 Смежные вопросы

  • Нет связанных вопросов^_^