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

使用py2app打包时如何修复TypeError: expected str... not NoneType错误

问题:py2app打包Minecraft打开次数统计应用失败

单独运行Python脚本正常,但用py2app打包时构建失败,报错:

File "<frozen posixpath>", line 415, in realpath
TypeError: expected str, bytes or os.PathLike object, not NoneType

我的Python脚本

import os, getpass

path = "/Applications/Minecraft.app"
os.system(f"open {path}")
username = getpass.getuser()
with open ('/Users/'+username+'/Library/Application Support/minecraft/resourcepacks/Splash/assets/minecraft/log.txt', 'a') as f:
    f.write("lol\n")


    with open ('/Users/'+username+'/Library/Application Support/minecraft/resourcepacks/Splash/assets/minecraft/log.txt', 'r') as f:
        x = len(f.readlines())

    with open ('/Users/'+username+'/Library/Application Support/minecraft/resourcepacks/Splash/assets/minecraft/texts/splashes.txt', 'w') as f:
        f.write("Opened " + str(x) + " times!")

setup.py代码

from setuptools import setup

APP = ['minecraft.py']
DATA_FILES = ["icon.icns"]
OPTIONS = {
    'iconfile':'icon.icns',
    'argv_emulation': True,
    'plist': {
        'LSUIElement': True,
    },
    'packages': ['os', 'getpass'],
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

使用的终端命令

python3 setup.py py2app

系统环境:macOS Ventura

解决方向

  • 移除OPTIONS中的packages配置:os和getpass是Python标准库,py2app会自动识别处理,手动添加反而可能触发路径解析错误。
  • 优化文件路径拼接:用os.path.join()代替字符串拼接,避免因路径格式问题产生None值,示例:
    log_path = os.path.join('/Users', username, 'Library', 'Application Support', 'minecraft', 'resourcepacks', 'Splash', 'assets', 'minecraft', 'log.txt')
    splash_path = os.path.join('/Users', username, 'Library', 'Application Support', 'minecraft', 'resourcepacks', 'Splash', 'assets', 'minecraft', 'texts', 'splashes.txt')
    
  • 检查icon.icns文件路径:确保该文件存在于执行打包命令的当前工作目录,路径无误。
  • 尝试关闭argv_emulation:如果应用不需要处理命令行参数,该选项可能引发不必要的环境变量或路径问题。
  • 确认Python环境一致性:打包时使用的Python环境需与运行脚本时一致,避免依赖或路径冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:22:00