Я обновил другой ответ, на который вы ссылаетесь.
Если ваш код python явно не использует SQLAlchemy, вам не нужно включать его в командную строку сборки pyinstaller. Если вы используете SQLAlchemy, вам могут потребоваться дополнительные перехватчики, упомянутые в другом ответе.
Поскольку вы развертываете свой EXE на другом имени хоста (сервере), чем ваша среда сборки (рабочая станция), целевой сервер может не уже установлен клиент Db2.
python ibm_db использует CLI (интерфейс уровня вызова) для доступа к базам данных Db2. Db2-клиент предоставляет такой интерфейс командной строки. Если у вас нет Db2-клиента, доступного для ibm_db, тогда модуль ibm_db не загрузится, и вы увидите свой симптом. Когда вы устанавливаете ibm_db, по умолчанию он добавляет на вашу рабочую станцию небольшой Db2-клиент (без установки), называемый clidriver, но он не будет включен pyinstaller в ваш пакет.
Если на сервере нет Db2- клиент уже установлен, и вы НЕ используете sh для отдельной установки и настройки Db2-клиента, тогда вы можете перестроить свой пакет pyinstaller, включив в него clidriver
, который модуль python ibm_db предоставляет по умолчанию. Чтобы перестроить, вам необходимо включить дополнительные параметры командной строки для pyinstaller.
Чтобы включить clidriver, сначала найдите его местоположение с помощью команды pip show ibm_db
, а затем найдите значение Location:
и добавьте к этому пути значение \clidriver
. Это полный путь к вашему clidriver, например c:\path\to\clidriver
Затем повторно запустите вашу предыдущую команду pyinstaller с дополнительным параметром
--add-data="c:\path\to\clidriver;.\clidriver
"
Если ваш код python зависит от настроенных извне DSN (вместо длинных строк подключения внутри кода), и если вы создали подходящий файл db2dsdriver.cfg
, содержащий эти DSN и любые параметры, необходимые для каждой базы данных или DSN, вам также необходимо будет включить это db2dsdriver.cfg
файл в вашем пакете. Если ваш код не полагается на внешне настроенные DSN, этот шаг может не понадобиться. Вы также можете запустить сценарий db2cli
командных строк на сервере для настройки db2dsdriver.cfg
вместо его объединения. , если это ваше предпочтение.
Если вам нужно использовать исполняемый файл odbcad32.exe
на имени хоста целевого сервера для настройки DSN Db2, вам также потребуется запустить командную строку установки clidriver на целевом сервере после вы доставляете свой EXE-файл, созданный pyinstaller, запустив его исполняемый файл db2cli install -setup
из clidriver \ bin dire ctory как администратор. Если вам НЕ нужно использовать графические интерфейсы, такие как odbcad32.exe
, на целевом имени хоста, этот шаг можно пропустить.
Если вы используете зашифрованные соединения с Db2 (например, SSL / TLS) или аутентификацию на основе сертификатов, тогда ваш пакет может также включать соответствующие сертификаты и / или хранилища ключей / тайники. Таким образом, вам могут потребоваться дополнительные параметры для вашей сборки pyinstaller.
На целевом сервере может быть полезно добавить полный каталог clidriver \ bin в переменную среды PATH. Убедитесь, что каталоги, содержащие любые файлы конфигурации или файлы данных, доступны для чтения любому пользователю или группе, которым требуется доступ к ним.
Кроме того, имейте в виду, что IBM обновляет свое программное обеспечение clidriver пару раз в год с учетом требований безопасности. исправления и исправления ошибок вместе с новыми функциями. После тестирования ваш EXE-файл, созданный pyinstaller, должен быть обновлен и распространен, чтобы включить обновленный clidriver.