What is sys._MEIPASS. What is the value of this variable and it's use ? I was a looking one python script but when I ran it on eclipse(pydev). It showing error.
3 Answers
sys._MEIPASS is a temporary folder for PyInstaller. See this question for more information.
This is the path attribution created by pyinstaller, it is quite useful when you have some resource files (like .bmp .png) to load in your python one-file-bundled app.
When a bundled app starts up, the bootloader sets the
sys.frozen
attribute and stores the absolute path to the bundle folder insys._MEIPASS
. For a one-folder bundle, this is the path to that folder. For a one-file bundle, this is the path to the temporary folder created by the bootloader.
a typical use would be:
from pathlib import Path
import sys
if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
bundle_dir = Path(sys._MEIPASS)
else:
bundle_dir = Path(__file__).parent
path_to_dat = Path.cwd() / bundle_dir / "other-file.dat"
You may want to check details here: https://pyinstaller.readthedocs.io/en/stable/runtime-information.html
If you want to disable the error Lint gives you in your editor (Eclipse, MS-Code, ...) add the following comment at end of your line:
if getattr(sys, 'frozen', False): # Running as compiled
running_dir = sys._MEIPASS + "/files/" # pylint: disable=no-member
The solution was from here if you want to disable a single line of code, not all errors of a kind.