Преобразование скрипта python в автономное приложение [duplicate]

Я искал решение, позволяющее работать $.bind и $.unbind без проблем в динамически добавленных элементах.

Поскольку on () делает трюк для присоединения событий, чтобы создать фальшивую отвязку на тех, к которым я пришел:

const sendAction = function(e){ ... }
// bind the click
$('body').on('click', 'button.send', sendAction );

// unbind the click
$('body').on('click', 'button.send', function(){} );

45
задан ShadowRanger 18 February 2017 в 02:50
поделиться

3 ответа

У меня была такая же проблема, как обходной путь я использовал cx_freeze. Мое приложение основано на wxPython, windows 10, python 3.6, cx_freeze 5.5.1

Это файл установки, который я использовал, и у меня есть файл msi в папке dist.

#setup.py
import sys, os
from cx_Freeze import setup, Executable

__version__ = "1.1.0"

include_files = ['logging.ini', 'config.ini', 'running.png']
excludes = ["tkinter"]
packages = ["os", "idna", "requests","json","base64","pyodbc"]

setup(
    name = "appname",
    description='App Description',
    version=__version__,
    options = {"build_exe": {
    'packages': packages,
    'include_files': include_files,
    'excludes': excludes,
    'include_msvcr': True,
}},
executables = [Executable("b2b_conn.py",base="Win32GUI")]
)`

, тогда python setup.py bdist_msi

6
ответ дан Ezequiel Alanís 19 August 2018 в 02:59
поделиться
  • 1
    Как и вы, я использовал cx_freeze для создания исполняемого файла, потому что это было совместимо с моей версией python и было проще в использовании. Благодарим вас за то, что вы поделились своим файлом установки, чтобы люди могли использовать это в качестве примера. – Dennis 17 January 2018 в 09:50
  • 2
    Если у меня есть from PyQt5 import QtGui, как я могу ввести его в packages? Только PyQt5 или только QtGui или оба? – Hrvoje T 24 May 2018 в 06:20
  • 3
    Hrvoje T, я включил все PyQt5. – Taras Mykhalchuk 27 June 2018 в 05:57

Деннис, через несколько часов после вас, я тестирую одно и то же без везения, я установил Python 3.6 и на данный момент он не работает.

Я пытаюсь пройти, ve установил Python 3.4.3 и попробуйте это:

C:\socket> c:\Python34\python.exe setup.py py2exe

1) введите в папку сценария 2) деактивируйте любой антивирус, который у вас есть (странная вещь, узнайте другим вопросом SO x)

2) вызовите интерпретатор python 3.4.3 по его абсолютному пути, в моем случае я установил в:

C:\Python34

3) выполнил команду

c:\Python34\python.exe setup.py py2exe

надеюсь, что мне понравится

5
ответ дан Ricardo Martínez 19 August 2018 в 02:59
поделиться
  • 1
    Я попытался сделать то же самое с Python 3.5, но застрял в установке py2exe, потому что pip нуждается в более новой версии, я получаю сообщение об ошибке. You are using pip version 8.1.1, however version 9.0.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. Когда я пытаюсь обновить pip, я получаю ту же ошибку! – Dennis 11 January 2017 в 08:26
  • 2
    Как я вижу, у вас есть 2 варианта: 1) Try with Python 3.4.3, this one i have already tested. 2) Identify which python you have, when you type at console 'python', what version says? может быть у вас 2 питона и нужно указать, какой из них вы хотите обновить. – Ricardo Martínez 12 January 2017 в 03:40
  • 3
    кстати, @Dennis – Ricardo Martínez 12 January 2017 в 03:48
  • 4
    Мартинес теперь говорит 3.5 вместо 3.6. Я указал путь к 3.5, а pip 8.1.1 установлен только для 3.5, потому что у 3.6 уже есть 9.0.1. Я попробую вас советом с несколькими версиями. – Dennis 12 January 2017 в 08:31
  • 5
    Извините за задержку, введите в свою папку Python и запустите «python -m pip install --upprade pip» и обновите свой Python 3.5 Pip – Ricardo Martínez 26 January 2017 в 03:42

Python 3.6 полностью переработал байт-код для CPython (он больше не является «байтовым» кодом, это словосочетание, где все коды операций имеют ширину в два байта вместо 1-3).

Неисправность, которую вы видите, происходит в коде py2exe opcode parsing, который, учитывая самую последнюю опубликованную версию py2exe, поддерживает только утверждения для 3.3 и 3.4, не мог знать или поддерживать , новый код кода кода; они даже не были задуманы в то время py2exe. Байт-код часто изменяется малыми способами от версии к версии, которая может сломаться даже Python 3.5 (при условии, что только поддержка 3.3 и 3.4 заявлена ​​явно), но 3.6 на 100% гарантированно сбой.

41
ответ дан ShadowRanger 19 August 2018 в 02:59
поделиться
  • 1
    Разве нет альтернатив? – Alex Jolig 21 November 2017 в 18:28
  • 2
    @AlexJolig: Есть, хотя я не проверял, совместимы ли они все с Python 3.6. Я знаю PyInstaller и cx_Freeze; могут быть и другие. – ShadowRanger 22 November 2017 в 01:53
  • 3
    Я тестировал cx_freeze. Он совместим с python3.6, но не может создать один файл exe. Проблема с Pyinstaller заключается в том, что вы не можете создавать x86 exe-файл через x64 os – Alex Jolig 22 November 2017 в 04:49
Другие вопросы по тегам:

Похожие вопросы: