Почему после сборки exe-файла через Pyinstaller приложение не читает config.ini?
Я сделал телеграм-бота через aiogram. Весь код для него лежит в одном файле - parser.py, также используется конфигурационный файл config.ini. Все файлы лежат в одной папке. Через интерпретатор Python всё прекрасно работает. Но если создать exe-файл через pyinstaller (pyinstaller —onefile parser.py), то вылетает такая ошибка, как на скриншоте. То есть, как я понял, почему-то не получается прочитать конфиг. Не подскажете, пожалуйста, в чём может быть проблема?
Файл config.ini:
token = 1111111111111
id_channel = 1111111111
id_channel_stat = 111111111111111
id_user = 1111111111111111111
Участок кода в parser.py, где происходит взаимодействие с config.ini:
path = '/'.join((os.path.abspath(__file__).replace('\\', '/')).split('/')[:-1])
config.read(os.path.join(path, "config.ini"), encoding='utf-8')
token = config['Settings']['token']
id_channel = config['Settings']['id_channel']
id_channel_stat = config['Settings']['id_channel_stat']
id_user = config['Settings']['id_user']
Ответы (1 шт):
Это происходит потому что в exe ваш path выглядит так: C:/Users/username/AppData/Local/Temp/_MEI118602.
Происходит это из-за особенностей "компиляции" python. Всё дело в том, что фактически (и довольно грубо) ваш exe - это самораспаковывающийся архив, в котором содержится ваш код и интерпретатор python.
Чтобы узнать путь к exe используйте это:
path = '/'.join(sys.executable.replace('\\', '/').split('/')[:-1])