Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2013 16:15:23

Faer
Зарегистрирован: 2013-08-25
Сообщения: 25
Репутация: +  3  -
Профиль   Отправить e-mail  

Компиляция через cx_freeze

Написал я один скрипт и никак не могу его скомпилировать. Дело в том, что я использовал стороннюю библиотеку Pmw. Как следствие, скомпилированный файл EXE при запуске выдаёт ошибку, якобы, он эту библиотеку не видит(см. картинку).

Подскажите, как это исправить.

Файл setup.py:

import sys
from cx_Freeze import setup, Executable
build_exe_options = {"includes": ["Pmw"]}
base = None
if sys.platform == "win32":
    base = "Win32GUI"
setup(  name = "Passworder",
        version = "1.0",
        description = "Password keeper and generator",
        options = {"build_exe": build_exe_options},
        executables = [Executable("Passworder.py", base=base)])

Отредактировано Faer (Авг. 29, 2013 16:17:13)

Прикреплённый файлы:
attachment Безымянный.JPG (42,2 KБ)

Офлайн

#2 Авг. 29, 2013 22:58:26

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Компиляция через cx_freeze

Faer
и никак не могу его скомпилировать
Немного не в тему.
1 Поскольку это ваше первое сообщение, то: А может вам не надо компилировать скрипт? В 99 случаях из 100 этого не требуется. Попробуйте обосновать сообществу зачем это надо.
2 Полезно проверить что будет при попытке выполнить из обычного скрипта os.listdir(“C:\\Docu…”). Не раз писал - под windows использовать в путях к модулям русские буквы, пробелы и прочие выкрутасы это искать приключений на свою задницу. Извините за грубость.
3 listdir не может залезть в архивы, а import может:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
print os.listdir(u"фыв фыв/pmw.zip/pmw")
Traceback (most recent call last):
File “a.py”, line 4, in <module>
print os.listdir(u“фыв фыв/pmw.zip/pmw”)
WindowsError: Error 3 : u'\u0444\u044b\u0432 \u0444\u044b\u0432/pmw.zip/pmw\\*.*'

:) т.е. моя основная рекомендация по удалению ошибки компиляции: не компилировать скрипт.



Отредактировано doza_and (Авг. 29, 2013 23:01:45)

Офлайн

#3 Авг. 29, 2013 23:24:53

Faer
Зарегистрирован: 2013-08-25
Сообщения: 25
Репутация: +  3  -
Профиль   Отправить e-mail  

Компиляция через cx_freeze

Я намерен раздавать скрипт. Всё-таки, Python имеется далеко не у всех, а устанавливать его из-за одной программы не очень-то рентабельно. Проще скомпилировать его и раздавать без лишних заморочек.

Вот за русские буквы спасибо. Проблема не в этом, но это помогло мне справиться с другой, новой проблемой. XD

В общем-то я решил вопрос, заменив Pmw'шный виджет стандартным tkinter'овским. То есть, просто исключил присутствие Pmw в import'ах.

Офлайн

#4 Авг. 30, 2013 21:09:23

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Компиляция через cx_freeze

Faer
а устанавливать его из-за одной программы не очень-то рентабельно
А вы посмотрите - cx_freeze практически и ставит питон. Поэтому если вы распространяете одно приложение то никакой нет, а для двух и более получится много неполноценных копий питона, которые трудно поддерживать и обновлять.
Посмотрите на java, они ведь не стесняются рантайм свой ставить, почему вы должны стесняться ставить питон?



Отредактировано doza_and (Авг. 30, 2013 21:10:53)

Офлайн

#5 Авг. 31, 2013 12:34:51

Faer
Зарегистрирован: 2013-08-25
Сообщения: 25
Репутация: +  3  -
Профиль   Отправить e-mail  

Компиляция через cx_freeze

doza_and
Посмотрите на java, они ведь не стесняются рантайм свой ставить, почему вы должны стесняться ставить питон?
Тоже верно!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version