zoukankan      html  css  js  c++  java
  • pyinstaller找不到文件或文件夹no such file错误

    pyinstaller这个坑货,折腾了2小时看了十几个教程。

    1.先随便pyinstaller -F v1.py一下,会得到一个v1.spec

    2.打开code.spec

    (1)如果有多个同目录下的py文件直接添加到第一个列表中

    (2)datas中要添加你的所有其他文件夹,列表中为一个元组,第一个元素就是目录路径,第二个元素是与生成的exe相对的路径

    a = Analysis(['v1.py','F:\work\zdx\game\xxx\cfg.py','F:\work\zdx\game\xxx\utils.py'],
    pathex=['F:\work\zdx\game\xxx'],
    binaries=[],
    datas=[('F:\work\zdx\game\xxx\compute','compute'),
    ('F:\work\zdx\game\xxx\resources\audios','resources\audios'),
    ('F:\work\zdx\game\xxx\resources\fonts','resources\fonts'),
    ('F:\work\zdx\game\xxx\resources\images','resources\images'),
    ('F:\work\zdx\game\xxx\UI','ui')
    ],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False)
    3.添加代码(这一步可能不需要,但还试一下),所有import的其他文件夹中的py文件
    import sys
    sys.path.append('./compute')
    sys.path.append('./UI')
    4.添加代码,读取资源文件的函数
    def get_resource_path(relative_path):
    if hasattr(sys, '_MEIPASS'):
    return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)
    相应的读取资源的地方都要改成如下
    FONTPATH = os.path.join(os.getcwd(), get_resource_path('resources/fonts/Gabriola.ttf'))
    5.最后一步,pyinstaller -F v1.spec
  • 相关阅读:
    Socket基础一
    MyBatisPlus【目录】
    MyBatis(十一)扩展:自定义类型处理器
    MyBatis(十一)扩展:批量操作
    MyBatis(十一)扩展:存储过程
    MyBatis(十一)扩展:分页插件PageHelper
    MyBatis(十)插件 4
    09月07日总结
    09月06日总结
    09月03日总结
  • 原文地址:https://www.cnblogs.com/MarsMercury/p/15367172.html
Copyright © 2011-2022 走看看