Включая файлы Excel с программой в Pyinstaller - PullRequest
1 голос
/ 15 апреля 2020

Я написал код в python, который открывает файл шаблона Excel. Каждый день, в полночь, он копирует этот шаблон в новый файл Excel, где код будет записывать в него данные за этот день. Моя цель - создать один исполняемый файл, содержащий мой код и файл шаблона Excel, используя pyinstaller.

По сути, я хочу иметь возможность открывать файл Excel шаблона независимо от того, содержит ли этот файл компьютер или нет, путем объединения файл excel в exe-файл, полученный из pyinstaller:

Прямо сейчас я открываю файл excel, как показано ниже:

import os
import openpyxl

theFile = openpyxl.load_workbook(os.getcwd()+"\templateExcel.xlsx")
currentSheet = theFile[theFile.sheetnames[0]]

Однако, когда я включаю файл excel в команду pyinstaller как --add-data "templateExcel.xlsx;templateExcel.xlsx и запустите exe-файл, он не сможет определить местоположение файла templateExcel. Я понимаю, что при запуске на другом компьютере os.getcwd () дает другой путь, поэтому он, очевидно, не сможет открыть файл Excel. Поэтому мне нужен был способ вложить файл Excel в исполняемый файл, чтобы код python мог найти его независимо от компьютера.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Обратите внимание: при использовании «getcwd ()» вы не получите желаемый результат, который искали, он получит место, из которого вы выполнили свой exe-файл.

Например, посмотрите на следующий длинный модуль:

from os import getcwd
print(getcwd())

Если вы выполните его из разных мест, вы получите разные результаты: enter image description here

Работал ли PyInstaller как вы Предположим, что это (поместив файл относительно какого-либо модуля) вы могли бы использовать file вместо getcwd (), поскольку это указывало, где находится модуль (который является постоянным, в отличие от места, из которого исполняется exe) , но это не так.

В любом случае, ответа @Sezer BOZKIR должно быть достаточно, обратите внимание на добавленный мной комментарий.

0 голосов
/ 15 апреля 2020

Вы можете использовать; Добавление файла данных в Pyinstaller с использованием опции onefile
Суммарно:

pyinstaller --onefile --nowindow --add-data text.txt;included winprint.py --distpath .

и образец python script:

import os 
import sys

os.chdir(sys._MEIPASS)
os.system('included\\text.txt')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...