6 / 8 / 2
Регистрация: 20.12.2012
Сообщений: 748

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

30.04.2019, 19:32. Показов 3828. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru