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
  • 相关阅读:
    HDU.6681.Rikka with Cake(欧拉公式 树状数组)
    Codeforces.449C.Willem, Chtholly and Seniorious(ODT)
    2017-2018 ACM-ICPC, Asia Daejeon Regional Contest (E,G,H,I,K)
    CF GYM.101987A.Circuits(线段树)
    2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018)
    220
    219
    218
    217
    216
  • 原文地址:https://www.cnblogs.com/MarsMercury/p/15367172.html
Copyright © 2011-2022 走看看