项目目录路径的获取

代码解析

这段Python代码的目的是确定项目目录的路径,它通过检查sys模块的frozen属性来判断当前脚本是被直接运行还是被打包成了可执行文件。这个属性在PyInstaller等打包工具中被设置为True。

1
2
3
4
5
6
7
8
9
10
11
12
if getattr(sys, "frozen", False):
PROJ_PATH = os.path.normpath(os.path.join(
sys.executable,
os.pardir, # 上一级目录(..)
))
else:
PROJ_PATH = os.path.normpath(os.path.join(
os.path.abspath(__file__), # 当前文件的绝对路径
os.pardir, # 上一级目录(..)
os.pardir, # 上一级目录(..)
))
getattr(sys, "frozen", False):尝试获取sys模块的frozen属性,如果不存在则默认为False
  • sys.executable:如果脚本被打包成了可执行文件,sys.executable是可执行文件的路径。
  • os.path.normpath(path):规范化路径,去除路径中的冗余部分,如多余的分隔符和上级目录引用(..)。
  • os.path.join(path, *paths):将多个路径组合成一个路径。
  • os.pardir:是一个常量,代表上级目录(..)。
  • os.path.abspath(__file__):获取当前文件的绝对路径。