Actually, I do not want any .py or .pyc files around my executable. (including userdict, sys, site etc) I want to have just single zip file for all python files.
I had a look at py2exe source codes but could not figure out how it just looks into a zip file. So maybe I have to compile the svn version of python. On 3/26/08, Gabriel Genellina <[EMAIL PROTECTED]> wrote: > > Furkan Kuru <furkankuru <at> gmail.com> writes: > > > I've tried below code (Setting pythonpath environment variable) > > and then initialize python interpreter but the embedded python > interpreter > did not get the newly assigned PYTHONPATH. > > I ve looked at the sys.path in python code (that is run by the embedded > interpreter) and it behaved according to older pythonpath. > > Note that you don't HAVE to set the environment variable PYTHONPATH, there > are > other ways to get directories listed in sys.path - and that is what really > counts. > The simplest way is to just write code to insert the desired directories > in > front of sys.path, after the call to Py_Initialize. The only problem is > that > some modules (like site and sitecustomize) are searched and executed > before > your code has a chance to modify sys.path - I hope it's not a problem for > you. > > > Setting environment variable seemed to be correct. > > Does py_initialize run in another thread so it starts before setting the > environment var? > > I could reproduce the problem with a smaller code (using C, not C++). > Testing > with Python 2.5.1 doesn't work (that means, it ignores the new setting for > PYTHONPATH). Testing with current Python trunk (from svn) *does* work. I > don't > know if this is a bug that has been fixed, or it works that way because > the > svn version is not the default installation and then searches for things > in a > different way. > > #include <Python.h> > > int main(int argc, char *argv[]) > { > putenv("PYTHONPATH=C:\\TEMP\\MF"); > system("set PYTHONPATH"); > printf("Py_GETENV(PYTHONPATH)=%s\n", Py_GETENV("PYTHONPATH")); > > Py_Initialize(); > PyRun_SimpleString("import sys\nprint sys.path"); > Py_Finalize(); > return 0; > } > > I compiled twice with these commands: > cl -MD -Ic:\apps\python25\include test.c c:\apps\python25 > \Libs\Python25.lib /Fetest25.exe > cl -MD -Ic:\apps\python\trunk\PC -Ic:\apps\python\trunk\include test.c > c:\apps\python\trunk\PCbuild\Python26.lib /Fetest26.exe > > Python25.dll and Python26.dll both were copied into the current directory. > > test25.exe: > PYTHONPATH=C:\TEMP\MF > Py_GETENV(PYTHONPATH)=C:\TEMP\MF > ['C:\\Apps\\Python25\\lib\\site-packages\\setuptools-0.6c5- > py2.5.egg', 'C:\\Apps\\Python25\\lib\\site-packages\\ > simplejson-1.7.1-py2.5-win32.egg', > ... many directories, not including C:\TEMP\MF ... ] > > test26.exe: > PYTHONPATH=C:\TEMP\MF > Py_GETENV(PYTHONPATH)=C:\TEMP\MF > 'import site' failed; use -v for traceback > ['C:\\TEMP\\MF', 'C:\\TEMP\\python26.zip', '', 'C:\\TEMP'] > > I don't understand how the test program, compiled for 2.5.1, could > actually > locate the Python directory. (It's not in my PATH, it's not the default > install directory, and I deleted the HKLM\Software\Python\PythonCore\2.5 > registry key). > > -- > Gabriel Genellina > > > -- > http://mail.python.org/mailman/listinfo/python-list > -- Furkan Kuru
-- http://mail.python.org/mailman/listinfo/python-list