You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac下PyInstaller打包可执行文件中os.isdir失效问题

Mac下PyInstaller单文件打包后目录检测为空的原因及解决办法

问题根源

当用pyinstaller --onefile打包Mac程序时,脚本运行和打包后程序运行的当前工作目录环境存在差异:

  • 直接运行Python脚本时,你的当前工作目录就是path指向的目录,os.path.isdir(x)中的x(来自os.listdir(path)的文件名)会基于当前工作目录解析,能正确识别目录。
  • 打包成单文件可执行程序后,程序运行时的当前工作目录不一定等于path,此时x作为相对路径,会基于程序当前的工作目录去查找,而非path目录,导致所有os.path.isdir(x)都返回False,最终existDirs为空。

解决办法

修改代码,将os.listdir(path)返回的文件名与path拼接成完整路径后再判断是否为目录:

import os, sys
path = os.path.abspath(os.path.dirname(sys.argv[0])) 
listFiles = [x for x in os.listdir(path)] 
# 拼接完整路径后判断目录
existDirs = [x for x in os.listdir(path) if os.path.isdir(os.path.join(path, x))]

print(path)
print(listFiles)
print(existDirs)

验证逻辑

os.path.join(path, x)会生成path目录下每个文件/子目录的完整绝对路径,无论程序当前工作目录是什么,都能准确指向目标位置,确保os.path.isdir的判断结果正确。

内容的提问来源于stack exchange,提问作者Rapid1898

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:40:58