Yoyo-migrations: невозможно подключиться к SQLite, когда мое приложение упаковано с помощью pyinstallerPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Yoyo-migrations: невозможно подключиться к SQLite, когда мое приложение упаковано с помощью pyinstaller

Сообщение Гость »


У меня есть приложение Flask. Для простоты:

из yoyo.backends.core.sqlite3 import SQLiteBackend из yoyo.backends.core импортировать __all__ приложение = Flask(__name__, static_folder='static', template_folder='templates') защита __run_migrations(): db_path = '/op/mydb.db' бэкэнд = yoyo.get_backend(f"sqlite:///{db_path}") миграция_путь = путь_ресурса('./migrations/') log.info(f"корень проекта: {migrations_path}") миграции = yoyo.read_migrations(migrations_path) с backend.lock(): backend.apply_migrations(backend.to_apply(миграции)) если __name__ == '__main__' : __run_migrations() приложение.run() Все работает как надо. Но когда я запутываю свой код с помощью Pyarmor и упаковываю его с помощью pyinstaller, приложение не запускается. Ошибка:

Traceback (самый последний вызов — последний): Файл «yoyo\connections.py», строка 74, в get_backend. Файл «yoyo\backends\base.py», строка 570, в get_backend_class Файл «importlib_metadata\__init__.py», строка 294, в __getitem__ Ключевая ошибка: 'sqlite' Во время обработки вышеуказанного исключения произошло другое исключение: Traceback (последний вызов последний): Файл «», строка 3, в Файл «», строка 318, в Файл «», строка 302, в __run_migrations Файл «yoyo\connections.py», строка 76, в get_backend. yoyo.connections.BadConnectionURI: нераспознанная схема подключения к базе данных «sqlite». [18036] Не удалось выполнить сценарий «приложение» из-за необработанного исключения! Это моя спецификация приложения:

# --*- режим: python ; кодировка: utf-8 --*- # Добавьте папку pytransform в список данных данные = [ ("../dist/obf/pytransform", "pytransform"), ("../миграции/", "миграции"), ("../шаблоны", "шаблоны"), («../статический», «статический») ] блок_шифр = Нет а = Анализ( ['../app.py'], путьex=['.'], двоичные файлы = [], данные = данные, скрытыйимпортс = ['йойо'], путь крюка=[], крючкиconfig={}, runtime_hooks=[], исключает=[], win_no_prefer_redirects = Ложь, win_private_assemblies = Ложь, шифр = блочный_шифр, ноархив = Ложь, ) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) # для обнаружения запутанных зависимостей кода a.scripts[-1] = 'приложение', 'dist/obf/app.py', 'PYSOURCE' для меня в диапазоне (len(a.pure)): если a.pure[1].startswith(a.pathex[0]): x = a.pure[1].replace(a.pathex[0], os.path.abspath('dist/obf')) если os.path.exists(x): если hasattr(a.pure, '_code_cache'): с open(x) как f: a.pure._code_cache[a.pure[0]] = компиляция(f.read(), a.pure[1], 'exec') a.pure = a.pure[0], x, a.pure[2] exe = EXE( пыз, а.скрипты, двоичные файлы, .zip-файлы, данные, [], имя = 'приложение', отладка = Ложь, bootloader_ignore_signals = Ложь, полоса = Ложь, упх=Истина, upx_exclude=[], runtime_tmpdir = Нет, консоль=Истина, Disable_windowed_traceback = Ложь, argv_emulation = Ложь, target_arch = Нет, codesign_identity = Нет, entitlements_file = Нет, ) кол = СОБИРАТЬ( Exe, двоичные файлы, .zip-файлы, данные, полоса = Ложь, упх=Истина, upx_exclude=[], имя = 'приложение' ) А вот как я запутываю код и упаковываю его:

pip install -r require.txt pyarmor-7 запутывает ^ --рекурсивный ^ --output=расстояние\obf ^ --exclude="__pycache__" ^ --exclude="*.pyc" ^ --exclude="венв" ^ --exclude="config.yaml" ^ --exclude="requirements.txt" ^ --exclude="расстояние" ^ --exclude="журналы" ^ --exclude="статический" ^ --exclude="шаблоны" ^ app.py pyinstaller --clean -y infra\app.spec При отладке проблемы я вижу, что при запуске упакованного приложения точки входа yoyo.backend недоступны:

def get_backend_class(name): backend_eps = enter_points(group="yoyo.backends") вернуть backend_eps[имя].load() Это проблема из-за того, что в yoyo-migrations нет возможности pyinstaller загрузить все точки входа? Или что-то другое? Может кто-нибудь помочь, пожалуйста?

Спасибо
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Упаковано с использованием плагина maven-shade.
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • «SQLite.SQLiteException» в SQLite-net.dll и «SQLite.SQLiteException» в ошибке System.Private.CoreLib.dll в .net Maui, ко
    Anonymous » » в форуме C#
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • «SQLite.SQLiteException» в SQLite-net.dll и «SQLite.SQLiteException» в ошибке System.Private.CoreLib.dll в .net Maui, ко
    Anonymous » » в форуме C#
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Невозможно использовать Microsoft.EntityFrameworkCore.Migrations.Design в проекте C#
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Невозможно использовать Microsoft.EntityFrameworkCore.Migrations.Design в проекте C#
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»