2012-01-03 5 views
1

Попытка узнать cx-freeze. У меня есть программа python, которую я пытаюсь заморозить exe.Python, PySerial и cx-freeze

Я использую PySerial и независимо от того, как я пытаюсь включить win32, ничто не помогает. Я использую Python 3.2 и win7.

Я искал веб-сайт тонким, а у других была та же проблема, но никакого решения, похоже, не появилось. Но я сомневаюсь, что никто не преуспел в cx_freezing что-то, что использует PySerial.

Я полностью застрял. Любая помощь будет высоко ценится

Ошибка:

Traceback (most recent call last): 
    File "C:\Python32\lib\site-packages\ 
7, in <module> 
    exec(code, m.__dict__) 
    File "snapper.py", line 8, in 
    File "C:\Python32\lib\site-packages\ 
    from serial.serialwin32 import * 
    File "C:\Python32\lib\site-packages\ 
e> 
    from serial import win32 
ImportError: cannot import name win32 

Setup.py:

from cx_Freeze import setup,Executable 

includefiles = ['caml.pkl', 'seql.pkl'] 
includes = ['DataBase', 'serial.win32'] 
excludes = ['Tkinter'] 
packages = [] 

setup(
    name = 'Setup', 
    version = '0.1', 
    description = 'Snapper configuration utility', 
    author = 'LST', 
    author_email = '[email protected]', 
    options = {'build_exe': {'excludes':excludes,'packages':packages,'include_files':includefiles}}, 
    executables = [Executable('snapper.py')] 
) 

Любая идея, куда идти? Заранее спасибо

Я пытался сделать слепой импорт:

if False: 
    import serial.win32 

не повезло ...

Может быть, я смотрю на это неправильный путь ....

+0

Что делать, если вы меняете включение в 'serial'? – Velociraptors

+0

Нет, попробовал это .. – Esben

ответ

0

Если вы можете использовать другой инструмент для замораживания вашей программы, PyInstaller говорит, что он поддерживает PySerial.

+2

PyInstaller выглядит очень красиво. Но не поддерживает python 3.x, насколько я могу видеть – Esben

+0

А, извините, я не уверен, как я не заметил тег python3. – Velociraptors

+0

Нет проблем. Я новичок в Python, и я не вижу, как я просто не начинал с 2.7 :-), возможно, скоро пойдет по этой дороге ... – Esben

3

Хорошо, проблема решена.

Вы должны использовать пакеты, чтобы заставить cx_Freeze включить serial.win32 (не «включать»)

После линии работы:

packages = ['serial.win32'] 

Memo к моему себе и другим: Обязательно проверьте dist для фактически включенных пакетов. Я понятия не имею, почему все пакеты не включались в cx_Freeze, но это работает для меня.