Access denied using Py2exe

社会主义新天地 提交于 2019-12-01 00:02:33

问题


I'm using Py2exe to create an executable as a windows service.

When I run the script I get this error:

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.

This is the call to 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"
        },
        },
    )

The problem occurs only on the build machine, it runs fine on my dev pc.

I've tried to set Full Control to everyone on the work folder, but it doesn't work.

Any idea?

Thank you.


回答1:


After two days investigating we found a solution with the help of the IT staff.

The issue arise when py2exe try to modify the executable adding metadata and\or icon.

The root cause? Simple... ANTIVIRUS.

It considers that operation a threat and cause the Access Denied error.

Thank you all!




回答2:


The problem is likely an antivirus program blocking write access to .exe files as others have noted. If you cannot or do not want to disable antivirus the following patch at the beginning of your setup.py file will rename the file to avoid the .exe extension before the modification and rename it back after.

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(...)



回答3:


I found that disconnecting from the Internet was enough to solve the problem (though this is probably related to the disabling the antivirus solution proposed).




回答4:


another possible solution is that you already have a dist folder with files in it - i did (forgot i had already run py2exe). removed the folder and it worked again



来源:https://stackoverflow.com/questions/21848033/access-denied-using-py2exe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!