Я столкнулся с подобной проблемой при создании исполняемого файла с помощью pyinstaller. Мне пришлось внести два изменения в мой скрипт, чтобы получить функциональный исполняемый файл.
Сначала я создал эту функцию:
def resource_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
В моем скрипте несколько классов, поэтому я поставил его в самом конце, чтобы все классы могли ссылаться на него. Затем я заменил любую функцию, которая у меня была
os.getcwd()
- что, вероятно, было плохой идеей - с
resource_path()
и для переменной внутри resource_path () я использовал эту функцию вместо:
os.path.dirname(os.path.abspath(__file__))
Эта функция все равно вернула то, что я хотел; местоположение ЭТОГО файла / программы, которая работает.
Итак, что было написано ранее:
filePath = os.getcwd() + "\\my_file.csv"
Теперь читается как:
filePath = resource_path(os.path.dirname(os.path.abspath(__file__))) + "\\my_file.csv"
Как только это произойдет, моя программа будет скомпилирована правильно и исполнена, как и ожидалось, надеюсь, она также поможет вам.