Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для artem78
6 / 8 / 2
Регистрация: 20.12.2012
Сообщений: 729

Установка версии exe при упаковке через PyInstaller

30.04.2019, 19:32. Показов 3729. Ответов 0

Студворк — интернет-сервис помощи студентам
Хочу сделать так, чтобы PyInstaller при сборке проекта прописывал в EXE текущую версию релиза, которая храниться в заданном файле. Создал файл VERSION, содержащий строку "1.3.1". Потом делаю чтение файла и подстановку этого значения в file_version_info.txt.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Чтение номера версии из файла VERSION
from itertools import repeat
with open('VERSION', 'r') as f:
  VERSION_STR = f.readline().rstrip()    # в виде строки - '1.3.1'
  VERSION_LIST = [int(i) for i in VERSION_STR.split('.', 4)]    # в виде списка цифр - [1, 3, 1]
  VERSION_TUPLE_4 = tuple(VERSION_LIST + list(repeat(0, 4 - len(VERSION_LIST))))    # в виде кортежа цифр из 4-х элементов - (1, 3, 1, 0)
 
 
# UTF-8
#
# For more details about fixed file info 'ffi' see:
# http://msdn.microsoft.com/en-us/library/ms646997.aspx
VSVersionInfo(
  ffi=FixedFileInfo(
    # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
    # Set not needed items to zero 0.
    filevers=VERSION_TUPLE_4,
    prodvers=VERSION_TUPLE_4,
    # Contains a bitmask that specifies the valid bits 'flags'r
#    mask=0x0,
    # Contains a bitmask that specifies the Boolean attributes of the file.
#    flags=0x0,
    # The operating system for which this file was designed.
    # 0x4 - NT and there is no need to change it.
#    OS=0x4,
    # The general type of file.
    # 0x1 - the file is an application.
#    fileType=0x1,
    # The function of the file.
    # 0x0 - the function is not defined for this fileType
#    subtype=0x0,
    # Creation date and time stamp.
#    date=(0, 0)
    ),
  kids=[
#    VarFileInfo([VarStruct(u'Translation', [1031, 1200])]), 
    StringFileInfo(
      [
      StringTable(
        u'040704B0',
        [StringStruct(u'Comments', u''),
        StringStruct(u'CompanyName', u''),
        StringStruct(u'FileDescription', u''),
        StringStruct(u'LegalCopyright', u''),
        StringStruct(u'LegalTrademarks', u''),
        StringStruct(u'ProductName', u''),
        StringStruct(u'FileVersion', VERSION_STR),
        StringStruct(u'ProductVersion', VERSION_STR),
        StringStruct(u'InternalName', u''),
        StringStruct(u'OriginalFilename', u'')])
      ])
  ]
)
Потом запускаю pyinstaller:
Code
1
pyinstaller StockDaemon2.py --version-file file_version_info.txt
и получаю синтаксическую ошибку:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
16612 INFO: Building PKG because out00-PKG.toc is non existent
16612 INFO: Building PKG (CArchive) out00-PKG.pkg
16740 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully.
16743 INFO: Bootloader d:\programms\python36\lib\site-packages\PyInstaller\bootl
oader\Windows-64bit\run.exe
16743 INFO: checking EXE
16744 INFO: Building EXE because out00-EXE.toc is non existent
16744 INFO: Building EXE from out00-EXE.toc
Traceback (most recent call last):
  File "D:\Programms\Python36\Scripts\pyinstaller-script.py", line 11, in <modul
e>
    load_entry_point('PyInstaller==3.3.1', 'console_scripts', 'pyinstaller')()
  File "d:\programms\python36\lib\site-packages\PyInstaller\__main__.py", line 9
4, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "d:\programms\python36\lib\site-packages\PyInstaller\__main__.py", line 4
6, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "d:\programms\python36\lib\site-packages\PyInstaller\building\build_main.
py", line 791, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'
))
  File "d:\programms\python36\lib\site-packages\PyInstaller\building\build_main.
py", line 737, in build
    exec(text, spec_namespace)
  File "<string>", line 26, in <module>
  File "d:\programms\python36\lib\site-packages\PyInstaller\building\api.py", li
ne 420, in __init__
    self.__postinit__()
  File "d:\programms\python36\lib\site-packages\PyInstaller\building\datastruct.
py", line 161, in __postinit__
    self.assemble()
  File "d:\programms\python36\lib\site-packages\PyInstaller\building\api.py", li
ne 511, in assemble
    versioninfo.SetVersion(tmpnm, self.versrsrc)
  File "d:\programms\python36\lib\site-packages\PyInstaller\utils\win32\versioni
nfo.py", line 583, in SetVersion
    vs = eval(txt)
  File "<string>", line 2
    from itertools import repeat
       ^
SyntaxError: invalid syntax
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2019, 19:32
Ответы с готовыми решениями:

Ошибка exe при компиляции через pyinstaller
Всем привет! Прошу помочь с решением проблемы. При компиляции exe-шника через pyinstaller возникает проблема с модулем mysql-connector. ...

Failed to execute script main при запуске сделанного через pyinstaller файла exe
Я сделал игру на pygame. Все файлы для игры лежат в одной папке. Но после того как я сделал exe через pyinstaller(pyinstaller -F -w...

Преобразование python в exe через pyinstaller и auto-py-to-exe
Всем привет! Начал изучение Python и решил преобразовать простенький код в .exe и столкнулся с проблемами. Пытался установить...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2019, 19:32
Помогаю со студенческими работами здесь

Повреждение exe при упаковке или распаковке
Привет! Написал программу, но когда передал её товарищу, оказалось, что она работает неправильно. Долго тестировал, пока не убедился, что...

Защищены ли исходники собранные через pyinstaller в exe c --key
Добрый день. Собрал exe с помощью pyinstaller, при сборке установил ключ --key. Потом нашел в интернете...

Сборка приложения Python в .EXE через PyInstaller 3.4 и запуск в Windows XP
День добрый! На машине Windows 10 x64 устанавливаю: - pycharm-community-2018.3.6 x32 - python-3.4.3.msi x32 -...

Не работает PyInstaller (При установке PyInstaller не создаётся исполняемый файл)
День добрый всем программистам! :yahoo: Нужна помощь с библиотеками Python, а конкретно с PyInstaller :help: Создал небольшую...

При запуске скрипта прога работает исправно, при компиляции через pyinstaller выдаёт ошибку
Доброго времени суток! Ну, собственно, вопрос сформулирован в заголовке темы. вот та процедура, которая не хочет работать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru