Я использую PyInstaller для сборки дистрибутива Windows exe для приложения Kivy, где используется docutils.rst. При настройке console = False в файле .spec PyInstaller сообщается о вирусе. Когда console = True, все работает плавно. При исключении docutils в пакете ни один вирус не сообщается вообще, но тогда я пропускаю определенные функции docutils.Другие опции для консоли PyInstaller = False?
К сожалению, сообщество разработчиков PyInstaller больше не хочет разрешать эти проблемы и направляет вас к поставщику программного обеспечения для вирусов ... (см.: https://github.com/pyinstaller/pyinstaller/issues?q=is%3Aissue+virus+is%3Aclosed). Конечно, это практически невозможно при разработке приложения для большого разнообразия корпоративного сообщества.
Вопрос 1: Кто-нибудь знает, как отключить консоль пульта python в исполняемом файле?
В противном случае я должен найти другое направление для сборки пакета. Например: How to compile python script to binary executable
Вопрос 2: как вы думаете, это лучший вариант, чтобы перейти в для пакета на основе: питон + kivy + многопроцессорных + docutils.rst парсера?
Для полноты картины я добавил мой фактический PyInstaller спецификации файла:
- - режим: питон - -
import os
from os.path import join
from kivy import kivy_data_dir
from kivy.deps import sdl2, glew
from kivy.tools.packaging import pyinstaller_hooks as hooks
block_cipher = None
kivy_deps_all = hooks.get_deps_all()
kivy_factory_modules = hooks.get_factory_modules()
datas = [
(join('common', '*.ini'), 'common'),
(join('common', '*.ttf'), 'common')
]
# list of modules to exclude from analysis
excludes = ['Tkinter', '_tkinter', 'twisted', 'pygments']
# list of hiddenimports
hiddenimports = kivy_deps_all['hiddenimports'] + kivy_factory_modules
hiddenimports += ['starmeter']
# binary data
sdl2_bin_tocs = [Tree(p) for p in sdl2.dep_bins]
glew_bin_tocs = [Tree(p) for p in glew.dep_bins]
bin_tocs = sdl2_bin_tocs + glew_bin_tocs
# assets
kivy_assets_toc = Tree(kivy_data_dir, prefix=join('kivy_install', 'data'))
source_assets_toc = Tree('images', prefix='images')
assets_toc = [kivy_assets_toc, source_assets_toc]
tocs = bin_tocs + assets_toc
a = Analysis(['wflmain.py'],
pathex=[os.getcwd()],
binaries=None,
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
runtime_hooks=[],
excludes=excludes,
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe1 = EXE(pyz,
a.scripts,
name='sgc',
exclude_binaries=True,
icon=join('images', 'sgc.ico'),
debug=False,
strip=False,
upx=True,
console=False)
coll = COLLECT(exe1,
a.binaries,
a.zipfiles,
a.datas,
*tocs,
strip=False,
upx=True,
name='sgc')
Просто запустите 'pyinstaller -w file.py' – Eular
Если проблема заключается только в упаковке, установите антивирус для _ignore_ этого конкретного файла, если вы уверены, что это не вирус (например,' run.exe' из официального репо), и если он упаковывает без ошибок, попробуйте приложение. Окончательный .exe всегда работал для меня без каких-либо антивирусных уведомлений. – KeyWeeUsr
Привет, KeyWeeUSr, вот что я сделал. Но затем установка настольного приложения в стороннюю систему, другой вирус-сканер сообщает о том же вирусе. Мой вирус-поставщик F-Secure проанализировал .exe, сделал ложный положительный результат и обновит свою базу данных. Но как насчет всех других продавцов .......? –