Never mind. I found it on the web. I needed to point my PYTHONPATH to sitepackages: https://stackoverflow.com/questions/56857449/importerror-after-cython-embed
-----Original Message----- From: Python-list <python-list-bounces+jschwar=sbcglobal....@python.org> On Behalf Of Jim Schwartz Sent: Thursday, April 6, 2023 2:50 PM To: 'Barry' <ba...@barrys-emacs.org> Cc: python-list@python.org Subject: RE: Windows installer from python source code without access to source code I downloaded VS community 2022 and I know how to access the developer command prompt. I'm using the one called x64 Native Tools Command Prompt for VS 2022 I ran a command to compile my python code that was converted to c with the following command: H:\Users\LindaJim\Documents\SourceCode\Software\aws_pc_backup\src\c>cl /O2 /I"C:\\Users\\jschw\\AppData\\Local\\Programs\\Python\\Python3112\\include\\" aws_pc_backup.c C:\\Users\\jschw\\AppData\\Local\\Programs\\Python\\Python3112\\libs\\python311.lib Microsoft (R) C/C++ Optimizing Compiler Version 19.35.32216.1 for x64 Copyright (C) Microsoft Corporation. All rights reserved. aws_pc_backup.c Microsoft (R) Incremental Linker Version 14.35.32216.1 Copyright (C) Microsoft Corporation. All rights reserved. /out:aws_pc_backup.exe aws_pc_backup.obj C:\\Users\\jschw\\AppData\\Local\\Programs\\Python\\Python3112\\libs\\python311.lib Creating library aws_pc_backup.lib and object aws_pc_backup.exp When I ran the program, I got this, though. Obviously, it doesn't know about the requests package. Do I have to link something in with the executable? H:\Users\LindaJim\Documents\SourceCode\Software\aws_pc_backup\src\c>aws_pc_backup.exe -m:lb Traceback (most recent call last): File "src\\python\\aws_pc_backup_main.py", line 7, in init python.aws_pc_backup_main ModuleNotFoundError: No module named 'requests' -----Original Message----- From: Barry <ba...@barrys-emacs.org> Sent: Tuesday, April 4, 2023 1:25 PM To: Jim Schwartz <jsch...@sbcglobal.net> Cc: Eryk Sun <eryk...@gmail.com>; python-list@python.org Subject: Re: Windows installer from python source code without access to source code > On 4 Apr 2023, at 16:28, Jim Schwartz <jsch...@sbcglobal.net> wrote: > > Where can I download that cl program? I've used gcc before, but I hear that > cl can use a setup.py program to run the compile and link and create a > windows .msi installer. Is that true? It is part of visual studio C++. Once you have that installed there are bat files that setup environment in the terminal. Then you can use cl, nmake etc Barry > > -----Original Message----- > From: Eryk Sun <eryk...@gmail.com> > Sent: Friday, March 31, 2023 12:55 PM > To: Jim Schwartz <jsch...@sbcglobal.net> > Cc: python-list@python.org > Subject: Re: Windows installer from python source code without access > to source code > >> On 3/31/23, Jim Schwartz <jsch...@sbcglobal.net> wrote: >> I want a windows installer to install my application that's written >> in python, but I don't want the end user to have access to my source code. > > Cython can compile a script to C source code for a module or executable > (--embed). The source can be compiled and linked normally. > For example, the following builds a "hello.exe" executable based on a > "hello.py" script. > >> cython -3 --embed hello.py >> set "PYI=C:\Program Files\Python311\include" >> set "PYL=C:\Program Files\Python311\libs" >> cl /I"%PYI%" hello.c /link /libpath:"%PYL%" >> copy hello.exe embed >> embed\hello.exe > Hello, World! > > I extracted the complete embeddable distribution of Python 3.11 into the > "embed" directory. You can reduce the size of the installation, if needed, by > minimizing the zipped standard library and removing pyd extensions and DLLs > that your application doesn't use. > > The generated "hello.c" is large and not particularly easy to read, but here > are some snippets [...]: > > [...] > /* Implementation of 'hello' */ > static PyObject *__pyx_builtin_print; > static const char __pyx_k_main[] = "__main__"; > static const char __pyx_k_name[] = "__name__"; > static const char __pyx_k_test[] = "__test__"; > static const char __pyx_k_print[] = "print"; > static const char __pyx_k_Hello_World[] = "Hello, World!"; > [...] > /* "hello.py":1 > * print("Hello, World!") # <<<<<<<<<<<<<< > */ > __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_Hello_World); > if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 1, __pyx_L1_error) > [...] > /* "hello.py":1 > * print("Hello, World!") # <<<<<<<<<<<<<< > */ > __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, > NULL); > if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) > [...] > int wmain(int argc, wchar_t **argv) { > [...] > if (argc && argv) > Py_SetProgramName(argv[0]); > Py_Initialize(); > if (argc && argv) > PySys_SetArgv(argc, argv); > [...] > m = PyInit_hello(); > [...] > if (Py_FinalizeEx() < 0) > return 2; > [...] > return 0; > [...] > > -- > https://mail.python.org/mailman/listinfo/python-list > -- https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list