You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.6 KiB

'''
Utils for retrieving resources when when in a frozen state.
MEIPASS explanation:
https://pythonhosted.org/PyInstaller/#run-time-operation
'''
import os
import sys
def is_frozen():
return getattr(sys, 'frozen', False)
def getResourcePath(*args):
if is_frozen():
# MEIPASS explanation:
# https://pythonhosted.org/PyInstaller/#run-time-operation
basedir = getattr(sys, '_MEIPASS', None)
if not basedir:
basedir = os.path.dirname(sys.executable)
resource_dir = os.path.join(basedir, 'gooey')
if not os.path.isdir(resource_dir):
raise IOError(
(
"Cannot locate Gooey resources. It seems that the program was frozen, "
"but resource files were not copied into directory of the executable "
"file. Please copy `languages` and `images` folders from gooey module "
"directory into `{}{}` directory. Using PyInstaller, a.datas in .spec "
"file must be specified.".format(resource_dir, os.sep)))
else:
resource_dir = os.path.normpath(
os.path.join(os.path.dirname(__file__), '..', '..'))
return os.path.join(resource_dir, *args)
def localResourcePath(path):
"""
A packaging aware util for getting the path to the local working directory.
When non-packaged, this is os.getcwd(), when packaged, it will be the local
(dynamic) directory where PyInstaller decompresses content.
"""
if is_frozen():
basedir = getattr(sys, '_MEIPASS', None)
return os.path.join(basedir or sys.executable, path)
else:
return os.path.join(os.getcwd(), path)