无法修复 pywintypes.error: (2, 'BeginUpdateResource', '系统找不到指定的文件。')

Posted

技术标签:

【中文标题】无法修复 pywintypes.error: (2, \'BeginUpdateResource\', \'系统找不到指定的文件。\')【英文标题】:Cannot fix pywintypes.error: (2, 'BeginUpdateResource', 'The system cannot find the file specified.')无法修复 pywintypes.error: (2, 'BeginUpdateResource', '系统找不到指定的文件。') 【发布时间】:2017-05-31 09:13:52 【问题描述】:

我正在尝试构建我的 Python 应用程序的 .exe 文件。我尝试了各种方法从 Github 和 *** 创建安装文件,但我不断收到同样的错误:

pywintypes.error: (2, 'BeginUpdateResource', 'The system cannot find the file specified.').

我正在使用 Python 3.6.1 和 cx_Freeze 来构建应用程序。

以下是我尝试过的不同设置文件:

尝试 1:

import os.path
from cx_Freeze import setup, Executable  

os.environ['TCL_LIBRARY'] = r'C:\Users\RedCode\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\RedCode\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'

executables = [Executable("myprogram.py", base="Win32GUI")]

options = 
    'build_exe': 

        'include_files': [
            os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
            os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),

        ]
    ,



setup(
    name="Standalone.exe",
    options=options,
    version="0.1",
    description='Simple tkinter application',
    executables=executables, requires=['cx_Freeze', 'cx_Freeze']
)

尝试 2:

from cx_Freeze import setup, Executable
import sys
import os

productName = "My Program"
if 'bdist_msi' in sys.argv:
    sys.argv += ['--initial-target-dir', r'C:\Users\RedCode\PycharmProjects\Standalone' + productName]
    sys.argv += ['--install-script', 'myprogram.py']

os.environ['TCL_LIBRARY'] = r'C:\Users\RedCode\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\RedCode\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'

exe = Executable(
      script="myprogram.py",
      base="Win32GUI",
      targetName="Product.exe"
     )
setup(
      name="Standalone.exe",
      version="1.0",
      author="Me",
      description="Copyright 2012",
      executables=[exe],
      scripts=[
               'myprogram.py'
               ]
      )

尝试 3:

import sys
import os
from cx_Freeze import setup, Executable


build_exe_options = "packages": ["os"], "includes": ["tkinter"]


def s_SourceFile():
    if (sys.argv[0] == ''):
        return __file__
    else:
        return sys.argv[0]


os.environ['TCL_LIBRARY'] = r'C:\Users\stefano.demattia\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\stefano.demattia\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'

setup(name="Standalone",
      version="0.1",
      description="My GUI application!",
      options="build_exe": build_exe_options,
      executables=[Executable("myprogram.py", base="Win32GUI", targetName="Standalone.exe")])

尝试 4:

application_title = "Car Database"
main_python_file = "cardb.py"

import sys

from cx_Freeze import setup, Executable

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
        name = "myprogram.py",
        version = "0.1",
        description = "Simple embedded database application",
        executables = [Executable("myprogram.py", base = base)])

我也尝试过 pyinstaller,但无论我做什么,它都会给我一个元组超出范围的错误,我尝试了 bbfreeze,我什至无法安装。我检查了我的文件,一切都在那里,所以我看不出它如何仍然告诉我找不到指定的文件。

我还能做什么或如何编辑上述尝试以使应用程序真正正确构建?有没有办法确定哪个文件丢失了?

【问题讨论】:

是在冻结期间还是在您尝试运行冻结的应用程序时出现错误?无论哪种方式,请发布完整的错误消息。 我不从 python 终端运行它。我只是打开一个常规的命令提示符。然后我对我的 .py 文件的存储方向执行“cd”。因此,例如我会执行 'cd C:\Users\gardener\PycharmProjects\untitled5\' 然后我会输入 'python setup.py build' 【参考方案1】:

删除版本,我遇到了同样的错误,查看代码并注意到它在源代码中引用了版本控制,所以我想尝试一下,它为我修复了它。

我知道发帖人可能不再需要这个,但将它发布给其他人,因为我在其他任何地方都没有看到答案。

【讨论】:

嗨,如果您可以添加删除版本的语句以防 OP 不清楚,您的回答可能会更有帮助。【参考方案2】:
cx_Freeze.setup(
name="SampleName",
options="build_exe": "packages": ["tkinter", "os"],
                       "include_files": ['tcl86t.dll', 'tk86t.dll', 'closenew.png', 'sujata.png', 'config.py', 'ui_attributes.py'],
version="0.01", # Remove this line
description="Tkinter Application",
executables=executables
)

我已经删除了这个版本并且它工作正常。

cx_Freeze.setup(
name="SampleName",
options="build_exe": "packages": ["tkinter", "os"],
                       "include_files": ['tcl86t.dll', 'tk86t.dll', 'closenew.png', 'sujata.png', 'config.py', 'ui_attributes.py'],
description="Tkinter Application",
executables=executables
)

【讨论】:

以上是关于无法修复 pywintypes.error: (2, 'BeginUpdateResource', '系统找不到指定的文件。')的主要内容,如果未能解决你的问题,请参考以下文章

win32ctypes.pywin32.pywintypes.error: (2, ‘LoadLibraryEx‘, ‘系统找不到指定的文件。‘)

使用 win10toast 时出错:pywintypes.error: (-2147467259, 'Shell_NotifyIcon', 'Unspecified error')

win32gui.GetPixel() 不工作:pywintypes.error: (0, 'GetPixel', 'No error message is available')

pywintypes.error: (1314, ‘****‘, ‘客户端没有所需的特权。‘)

AWS SAM-获取错误消息:pywintypes.error:(5,'CreateFile','访问被拒绝。')

python操作剪贴板错误提示:pywintypes.error: (1418, 'GetClipboardData',线程没有打开的剪贴板)