使用Py2ex拒绝访问

2024-04-26 15:04:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Py2exe创建一个作为windows服务的可执行文件。

当我运行脚本时,会出现以下错误:

File "C:\TeamCity\buildAgent\work\582d895bd5b431ac\winpython\WinPython-32bit-2.7.3.3\python-2.7.3\lib\site-packages\py2exe\build_exe.py", line 860, in build_executable add_resource(ensure_unicode(exe_path), script_bytes, u"PYTHONSCRIPT", 1, True) RuntimeError: EndUpdateResource: Access is denied.

这是对py2exe的调用:

    setup(
    name = NAME,
    description = DESCRIPTION,
    version = '1.0.133.43',
    service = [{'modules':["ServiceLauncher"], 'cmdline':'pywin32'}],
    zipfile=None,
    options = {
        "py2exe":{"packages":"encodings",
                  "includes":"win32com,win32service,win32serviceutil,win32event",
                  "excludes":"libiomp5md.dll"
        },
        },
    )

问题只发生在生成计算机上,它在我的开发人员pc上运行良好

我试着对工作文件夹中的每个人都设置完全控制,但它不起作用。

知道吗?

谢谢你。


Tags: build脚本可执行文件windowspackages错误serviceexe
3条回答

我发现,断开与Internet的连接就足以解决问题(尽管这可能与禁用所建议的防病毒解决方案有关)。

问题可能是防病毒程序阻止了对.exe文件的写入访问,正如其他人所指出的。如果您不能或不想禁用防病毒程序,请在setup.py文件开头的以下修补程序将重命名该文件,以避免在修改前使用.exe扩展名,并在修改后重新命名。

import py2exe.py2exe_util
from py2exe.py2exe_util import add_resource
import os

def add_resource_patch(name, *arg, **kwarg):
    name_tmp = name + '.tmp'
    os.rename(name, name_tmp)
    add_resource(name_tmp, *arg, **kwarg)
    os.rename(name_tmp, name)

py2exe.py2exe_util.add_resource = add_resource_patch

from distutils.core import setup
import py2exe
setup(...)

经过两天的调查,我们在IT人员的帮助下找到了解决方案。

当py2exe试图修改添加元数据和/或图标的可执行文件时,会出现此问题。

根本原因?简单。。。防病毒。

它认为该操作是一个威胁并导致拒绝访问错误。

谢谢大家!

相关问题 更多 >