Скомпилируйте приложение django в исполняемый файл с помощью PyInstaller
Я пытаюсь скомпилировать приложение Django как исполняемый файл. Я знаю, что это не лучшая практика - приложение было создано как серверное приложение, запускаемое при входе в систему, но теперь приложение будет использоваться пользователями, у которых нет доступа к серверу. Теперь задача состоит в том, чтобы сделать приложение устанавливаемым таким образом, чтобы обычный пользователь Windows мог дважды щелкнуть по exe и ввести url в браузере по своему выбору. Я работаю на Linux с Django 3.2.7, Python 3.8 и PyInstaller 4.1 (я знаю, что должен компилировать на windows платформе для Windows OS, чтобы запустить exe, но я сначала хотел попробовать использовать PyInstaller на моей OS).
Теперь, при запуске приложения, оно жалуется на то, что не найдена определенная папка в каталоге dist, что, когда я добавляю требуемую папку, меняется на файл not found "settings.pyc". ".pyc" файлы - это скомпилированные Python файлы, но я не могу grep имя файла, так что PyInstaller даже не создал его.
Я выполнил команду PyInstaller в директории, где находится первый "mysite". Я также попытался отдельно подключить папку "myapp", добавив файл hook, как предложено здесь (https://github.com/pyinstaller/pyinstaller/discussions/5911). Каталог проекта и сообщение об ошибке следующие:
mysite manage.py mysite settings.py urls.py wsgi.py __init__.py __pycache__ myapp static templates apps.py models.py urls.py views.py ...
Traceback (most recent call last):
File "manage.py", line 22, in <module>
File "manage.py", line 18, in main
File "django/core/management/__init__.py", line 419, in execute_from_command_line
utility.execute()
File "django/core/management/__init__.py", line 363, in execute
settings.INSTALLED_APPS
File "django/conf/__init__.py", line 82, in __getattr__
self._setup(name)
File "django/conf/__init__.py", line 69, in _setup
self._wrapped = Settings(settings_module)
File "django/conf/__init__.py", line 170, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "importlib/__init__.py", line 127, in import_module
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "PyInstaller/loader/pyimod03_importers.py", line 495, in exec_module
File "mysite/settings.py", line 16, in <module>
File "pathlib.py", line 1181, in resolve
File "pathlib.py", line 363, in resolve
File "pathlib.py", line 347, in _resolve
File "pathlib.py", line 452, in readlink
FileNotFoundError: [Errno 2] No such file or directory: '/home/me/Documents/App/dist/MyApp/mysite'
[6324] Failed to execute script 'manage' due to unhandled exception!
Когда я создаю требуемый каталог "dist/MyApp/mysite", приложение выдает ошибку о том, что не найден файл "settings.pyc". Чего мне не хватает? Единственное, что я могу придумать в качестве объяснения, это то, что PyInstaller не компилирует код, который должен быть скомпилирован и добавлен в подпапку каталога dist, но я не смог найти никаких соответствующих предупреждений/ошибок в терминале. (Я хотел включить вывод процесса PyInstaller, но SO посчитал его спамом).