On 10/05/2010 7:08 AM, Bill Janssen wrote:
A few weeks ago, Mark mentioned that there's now a way to run a Windows service without pythonservice.exe.I'd like to hear more about that. Right now, I'm stuck with my UpLib system on Windows. I'd like to be able to install everything in the UpLib directory, including a private copy of Python and PyWin32. But then there's no way to tell pythonservice.exe where the modules are, and so Python services don't start. I'm thinking the problem is this code in PythonService.cpp: // Our EXE entry point. 1540 1541 int _tmain(int argc, TCHAR **argv) 1542 { 1543 PyObject *module, *f; 1544 PyThreadState *threadState; 1545 HMODULE hmod; 1546 FARPROC proc; 1547 Py_Initialize(); 1548 PyEval_InitThreads(); 1549 module = PyImport_ImportModule("servicemanager"); 1550 if (!module) goto failed; I've got the PyWin32 extensions installed in a private site-packages directory under my stuff, which isn't the same as the Python site-packages site. I need a way to set PYTHONPATH, or in some other way initialize the DLL load path and Python sys.path, before running the pythonservice.exe, don't I? Otherwise, this load of "servicemanager" will fail (and Py_Initialize() will fail if I don't copy pythonservice.exe to the same location as python.exe and python26.dll).
That's correct. Using python.exe as the host will involve having a .py script which imports the servicemanager module then call PrepareToHostSingle and instantiate the service class - or something like that :)
Another alternative is to ship a slightly modified pythonxx.dll - it has a feature where a certain string resource contains the basename of the registry key used at runtime to load the pythonpath - eg, you will find the resource has "2.6" for Python 2.6 builds. Using a resource editor (or even a script using pywin32) to change this to some custom value will mean the pythonpath can be loaded from a private key in the registry, meaning you still get isolation from other installed Python versions.
HTH, Mark
Bill _______________________________________________ python-win32 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-win32
_______________________________________________ python-win32 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-win32
