2013-12-15 1 views
4

Это довольно неприятная проблема, возникающая при попытке создать файл .exe из скрипта Python 3 с использованием PyQt4. Я думаю, что это связано с использованием модуля uic для динамической загрузки файлов .ui. cx_freeze возвращается:SyntaxError при использовании cx_freeze в приложении PyQt

File "E:\Python32_32\lib\site-packages\cx_Freeze\finder.py", line 366, in _LoadModule 
    module.code = compile(codeString, path, "exec") 
    File "E:\Python32_32\lib\site-packages\PyQt4\uic\port_v2\load_plugin.py", line 41 
    except Exception, e: 
        ^
SyntaxError: invalid syntax 

Я решил эту проблему, некоторое время назад, но недавно я столкнулся с ним снова. Найти решение в Интернете непросто, поэтому я решил опубликовать Q & A на SO. Надеюсь, это будет полезно не только для меня :-).

ответ

9

Проблема заключается в том, что cx_freeze пытается использовать подмодуль uic для Python 2, а не 3 и встречает синтаксис Py3-несовместимый в одном из файлов. Решение довольно просто:

Найти uic каталог, он должен быть расположен в your_python_dir\Lib\site-packages\PyQt4\uic. Здесь есть две директории: port_v2 и port_v3. Переименуйте первый, например, port_v2_. Я думаю, что подобная проблема может возникнуть при использовании Python2-rename v3. В любом случае, это приведет к тому, что cx_freeze найдет подходящую версию uic, и скрипт должен правильно построить.