Re: How to enable pywin to evaluate -X utf8 flag
Mark Hammond <[email protected]> Tue, 6 Jun 2023 10:38:03 -0400
| Newsgroups | gmane.comp.python.windows |
|---|---|
| Message-ID | <[email protected]> |
That error typically means your Python code raised an exception before the service could be started. You probably need some way to track that down - eg, some way to discover stdout/stderr from your service - win32traceutil etc might help depending on how the service is configured. Does the demo itself work? Does it work without the command-line mods? Mark On 2023-06-06 9:57 a.m., Gualtiero Scotti wrote: > 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.png > > Thanks in advance for your availability. > Best regards > > Il giorno mar 6 giu 2023 alle ore 15:05 Mark Hammond > <[email protected]> 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 >> <[email protected]> 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 >> <[email protected]> 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 list >>> [email protected] >>> https://mail.python.org/mailman/listinfo/python-win32 >> _______________________________________________ python-win32 mailing list [email protected] https://mail.python.org/mailman/listinfo/python-win32