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 list
        python-win32@python.org
        https://mail.python.org/mailman/listinfo/python-win32
_______________________________________________
python-win32 mailing list
python-win32@python.org
https://mail.python.org/mailman/listinfo/python-win32

Reply via email to