Thank you Mark for your response, and your explanation.You are right, python.exe is not involved but I thought you handled the flag in your embedded calls.. When I try to start service it doesn't start and the error message is:
*Error starting service: The service did not respond to the start or control request in a timely fashion.* _svc_name_ = 'XXXXXXXXXXXXXXX' _svc_display_name_ = 'XXXXXXXXXXXXXXXXXXX' _svc_description_ = 'SXXXXXXXXXXXXXXX' _exe_name_ = sys.executable _exe_args_ = '-X utf8 "' + os.path.abspath(__file__) + '"' When I take a look to the service on Regedit I've the following situation: ImagePath = *"C:\Program Files (x86)\snapp-device-manager-win32\Python\python.exe" -X utf8 "C:\Program Files (x86)\xxxxxxxxxxxxxx\winservice_launcher32.py"* I can't find any logs about failure.... windows doesn't help me...... [image: image.png] Thanks in advance for your availability. Best regards Il giorno mar 6 giu 2023 alle ore 15:05 Mark Hammond < mhamm...@skippinet.com.au> ha scritto: > pythonservice.exe doesn't "wrap" python.exe - it's a stand-alone > executable which embeds Python. Thus there's no way to pass a cmd-line > param to python.exe as python.exe isn't involved. You could patch > pythonservice.exe to handle that arg, then do whatever it is python.exe > does with that arg. > > If you told me more about what went wrong with using python.exe as the > executable for the service we might be able to work something out there, > but "doesn't work" has never been a useful starting point. > > Cheers, > > Mark > On 2023-06-06 2:56 a.m., Gualtiero Scotti wrote: > > HI Mark and Hi all, > as I wrote previously Mark's solution did not work for me. I need > pythonsevice.exe is able to pass -X utf8 parameter to python interpreter or > in alternative is able to evaluate evaluate the environment > variable PYTHONUTF8=1. Any suggestions? > Please help me. > Thanks in advance > > > Il giorno lun 5 giu 2023 alle ore 10:51 Gualtiero Scotti <tie...@gmail.com> > ha scritto: > >> HI Mark, >> I've tried your solution but it doesn't work. When calling python >> directly, service fails to start. >> When i use >> #_exe_name_ = sys.executable #_exe_args_ = ' -X utf8 ' + '"' + >> os.path.abspath(sys.argv[0]) + '"' >> service are directly linked to my python app without using >> pythonservice.exe. ( I saw this on Regedit) >> >> *As you wrote on your example:* >> >> >> # This is an example of a service hosted by python.exe rather than >> # pythonservice.exe. >> >> # *Note that it is very rare that using python.exe is a better option* >> # than the default pythonservice.exe - the latter has better error >> handling >> # so that if Python itself can't be initialized or there are very early >> # i*mport errors, you will get error details written to the event log*. >> When >> # using python.exe instead, you are forced to wait for the interpreter >> startup >> # and imports to succeed before you are able to effectively setup your own >> # error handling. >> >> >> *# So in short, please make sure you *really* want to do this, otherwise >> just # stick with the default.* >> >> I need to use pythonservice.exe but I don't understand how it wraps my >> python application. Is there a way to tell to pythonservice.exe to call >> python with some interpreter arguments? >> Thanks in advance. >> >> >> Il giorno gio 1 giu 2023 alle ore 17:05 Mark Hammond < >> skippy.hamm...@gmail.com> ha scritto: >> >>> >>> https://github.com/mhammond/pywin32/blob/main/win32/Demos/service/nativePipeTestService.py >>> is a demo of using a service using python.exe and supports specifying the >>> command-line, so that might be an option? >>> >>> Mark >>> On 2023-06-01 5:28 a.m., Gualtiero Scotti wrote: >>> >>> Hi, I need to start my python application through windows service. For >>> this purpose I use pywin32. >>> I'm not able to make a Python instance to evaluate the -X uf8 flag. >>> >>> This flag must be passed during python invocation only and not when it >>> is already started. >>> After some investigations I've found the service launch >>> *pythonservice.exe* wrapper but I don't know how to pass the flag to >>> the Python interpreter. >>> >>> Is there another option to set this flag? It is possible to set an env >>> variable *PYTHONUTF8=1 * but pythonservice.exe doesn't seem to evaluate >>> it... >>> >>> *My environment* >>> *- Windows 11 Home 22H2* >>> *- Python 3.11.1* (tags/v3.11.1:a7a450f, Dec 6 2022, 19:43:28) [MSC >>> v.1934 32 bit (Intel)] on win32 >>> - *Pywin32 305* >>> - *Pywin32-ctypes 0.2.0* >>> >>> *Python documentation* >>> 4.7. UTF-8 mode¶ >>> <https://docs.python.org/3/using/windows.html#utf-8-mode> >>> >>> New in version 3.7. >>> >>> Windows still uses legacy encodings for the system encoding (the ANSI >>> Code Page). Python uses it for the default encoding of text files (e.g. >>> locale.getencoding() >>> <https://docs.python.org/3/library/locale.html#locale.getencoding>). >>> >>> This may cause issues because UTF-8 is widely used on the internet and >>> most Unix systems, including WSL (Windows Subsystem for Linux). >>> >>> You can use the Python UTF-8 Mode >>> <https://docs.python.org/3/library/os.html#utf8-mode> to change the >>> default text encoding to UTF-8. You can enable the Python UTF-8 Mode >>> <https://docs.python.org/3/library/os.html#utf8-mode> via the -X utf8 >>> command >>> line option, or the PYTHONUTF8=1 environment variable. See PYTHONUTF8 >>> <https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUTF8> for >>> enabling UTF-8 mode, and Excursus: Setting environment variables >>> <https://docs.python.org/3/using/windows.html#setting-envvars> for how >>> to modify environment variables. >>> >>> When the Python UTF-8 Mode >>> <https://docs.python.org/3/library/os.html#utf8-mode> is enabled, you >>> can still use the system encoding (the ANSI Code Page) via the “mbcs” codec. >>> >>> Note that adding PYTHONUTF8=1 to the default environment variables will >>> affect all Python 3.7+ applications on your system. If you have any Python >>> 3.7+ applications which rely on the legacy system encoding, it is >>> recommended to set the environment variable temporarily or use the -X >>> utf8 command line option. >>> >>> Note >>> >>> >>> Even when UTF-8 mode is disabled, Python uses UTF-8 by default on >>> Windows for: >>> >>> - >>> >>> Console I/O including standard I/O (see *PEP 528* >>> <https://peps.python.org/pep-0528/> for details). >>> - >>> >>> The filesystem encoding >>> >>> <https://docs.python.org/3/glossary.html#term-filesystem-encoding-and-error-handler> >>> (see *PEP 529* <https://peps.python.org/pep-0529/> for details). >>> >>> from -> https://docs.python.org/3/using/windows.html >>> >>> Please help me! >>> Thanks in advance >>> >>> >>> _______________________________________________ >>> python-win32 mailing >>> listpython-win32@python.orghttps://mail.python.org/mailman/listinfo/python-win32 >>> >>>
_______________________________________________ python-win32 mailing list python-win32@python.org https://mail.python.org/mailman/listinfo/python-win32