У меня есть некоторые трудности с применением файла css к моему приложению da sh при использовании cx_freeze. Если я запускаю python app.py
, то макет будет применен правильно, но не тогда, когда я выполняю .exe
, сгенерированный cx_freeze. Затем отображается макет по умолчанию html. css и изображение появляются в том же каталоге, где находится .exe
.
Вот так выглядит мой setup.py.
from setuptools import find_packages
from cx_Freeze import setup, Executable
options = {
'build_exe': {
'includes': [
'cx_Logging', 'idna', 'idna.idnadata'
],
'packages': [
'asyncio', 'flask', 'jinja2', 'dash', 'plotly', 'waitress'
],
'excludes': ['tkinter'],
'include_files': [
'assets/logo.jpg', 'assets/style.css'
],
}
}
executables = [
Executable('server.py',
base='console',
targetName='dash_app.exe')
]
setup(
name='BI_Report',
packages=find_packages(),
version='0.0.1',
description='rig',
executables=executables,
options=options
)
Для загрузки внешних файлов я использую вспомогательную функцию, как предложено здесь :
def find_data_file(filename):
if getattr(sys, 'frozen', False):
# The application is frozen
datadir = os.path.dirname(sys.executable)
else:
# The application is not frozen
# Change this bit to match where you store your data files:
datadir = os.path.dirname(__file__)
return os.path.join(datadir, filename)
app = dash.Dash(__name__,
assets_folder=find_data_file('assets/'))
Я использую:
Python 3.7.6
dash 1.9.1
cx-freeze 6.1
Любая помощь высоко ценится!