BTW, on the platform you are using, just so can compare with my MacOS
X system, can you write a hello world WSGI program which returns
pretty printed version of sys.modules.keys() and WSGI environ. Do this
for WSGIApplicationGroup set to '%{GLOBAL}' and for it set to 'xxx'.
Interested to see if see a difference in what modules are preloaded.

Graham

On 15 March 2011 16:48, Graham Dumpleton <[email protected]> wrote:
> Are you running this in daemon mode? Is the application the only thing
> running, be it embedded mode or daemon mode?
>
> If you are running one application, add:
>
>  WSGIApplicationGroup %{GLOBAL}
>
> This will force use of main interpreter, which presumably may have
> already had codecs imported as part of main Python initialisation.
>
> In other words, not working in sub interpreters perhaps as indicated
> maybe by other email if seen in other embedded systems.
>
> Graham
>
> On 15 March 2011 16:30, Andreas Sommer <[email protected]> 
> wrote:
>> On 15.03.2011 20:51, Graham Dumpleton wrote:
>>> The #python IRC channel says that yes, unicode in sys.path is okay and
>>> should be converted based on file system encoding. That was qualified
>>> by comment that 'it doesn't always work' as expected.
>>>
>>> Given that you are using a virtualenv I would suspect that maybe
>>> something is broken with that. That or mod_wsgi is running against
>>> different Python installation than what it was built for.
>> No, both the Debian Python installation and the virtualenv are the same
>> interpreter version. You can actually comment out the virtualenv lines
>> from my example WSGI file and get the same codec problem. I assume that
>> mod_wsgi starts up the interpreter without importing the codecs module.
>> Checked this by putting the following at the very beginning of the WSGI
>> file:
>>
>> import sys
>> with open("/tmp/wsgimodules", "wb") as f: print >>f, sys.modules
>>
>> The outcome was a modules dict without the "codecs" module!
>>
>> And for completeness the output of the tests you wanted me to run:
>>
>> Without virtualenv activation:
>>
>> sys.version = '2.6.6 (r266:84292, Dec 26 2010, 22:48:11) \n[GCC 4.4.5]'
>> sys.prefix = '/usr'
>>
>> With virtualenv (notice Unicode prefix because I inserted that into the
>> sys.path):
>>
>> sys.version = '2.6.6 (r266:84292, Dec 26 2010, 22:48:11) \n[GCC 4.4.5]'
>> sys.prefix =
>> u'/var/www/django-sites/351b488d-80bb-42f0-b1bb-927aa89a1d5c/django_simple_todo_list/env'
>>
>> And linkage of mod_wsgi.so-2.6 which is the .so file used by my Apache
>> process:
>>    linux-vdso.so.1 =>  (0x00007fff74806000)
>>    libpython2.6.so.1.0 => /usr/lib/libpython2.6.so.1.0 (0x00007fbd474d0000)
>>    libpthread.so.0 => /lib/libpthread.so.0 (0x00007fbd472b4000)
>>    libdl.so.2 => /lib/libdl.so.2 (0x00007fbd470af000)
>>    libutil.so.1 => /lib/libutil.so.1 (0x00007fbd46eac000)
>>    libm.so.6 => /lib/libm.so.6 (0x00007fbd46c2a000)
>>    libc.so.6 => /lib/libc.so.6 (0x00007fbd468c8000)
>>    libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007fbd46673000)
>>    libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007fbd462d2000)
>>    libz.so.1 => /usr/lib/libz.so.1 (0x00007fbd460ba000)
>>    /lib64/ld-linux-x86-64.so.2 (0x00007fbd47bb2000)
>>
>> As said above, I think not importing the "codecs" module by default is
>> the problem in my eyes. So the question is should mod_wsgi always
>> include this? -- you mentioned that most users use byte strings and thus
>> don't need the module. I have no problem with the manual "import codecs"
>> workaround, but that should get documented somewhere in the wiki.
>>> Can you provide the result of doing the following tests:
>>>
>>> http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Shared_Library
>>> http://code.google.com/p/modwsgi/wiki/CheckingYourInstallation#Python_Installation_In_Use
>>>
>>> Graham
>>>
>>> On 15 March 2011 15:40, Andreas Sommer <[email protected]> 
>>> wrote:
>>>> On 15.03.2011 18:54, Graham Dumpleton wrote:
>>>>> On 15 March 2011 06:45, Andreas Sommer <[email protected]> 
>>>>> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I'm getting the exception
>>>>>>
>>>>>>   File
>>>>>> "/var/www/django-sites/351b488d-80bb-42f0-b1bb-927aa89a1d5c/wsgi_autogen.py",
>>>>>> line 9, in <module>
>>>>>>     if os.path.exists(virtualenvDirectory + 'bin')
>>>>>>   File "/usr/lib/python2.6/genericpath.py", line 18, in exists
>>>>>>     st = os.stat(path)
>>>>>> LookupError: no codec search functions registered: can't find encoding
>>>>>>
>>>>>> in my WSGI script (autogenerated by my program Site Deploy):
>>>>>>
>>>>>> import os
>>>>>> import sys
>>>>>>
>>>>>> sys.path.insert(0,
>>>>>> u'/var/www/django-sites/351b488d-80bb-42f0-b1bb-927aa89a1d5c')
>>>>>>
>>>>>> virtualenvDirectory =
>>>>>> u'/var/www/django-sites/351b488d-80bb-42f0-b1bb-927aa89a1d5c/django_simple_todo_list/env/'
>>>>> And if you don't use unicode strings in sys.path?
>>>>>
>>>>> I have never heard of anyone doing that and didn't know you even could
>>>>> do it with Python 2.X.
>>>>>
>>>>> Graham
>>>> Sure, using byte strings instead works fine because then Python doesn't
>>>> have to decode Unicode to any filesystem encoding. But that is not a
>>>> solution for me... Unicode is the way to go. It's especially important
>>>> if you have special characters in some files and transfer them from one
>>>> filesystem to another. Try committing a file in GIT on Windows =
>>>> windows-1252, and then check it out on Linux = utf-8... GIT does not
>>>> support Unicode and thus f***s up filenames.
>>>>
>>>> Just out of interest: It seems that mod_wsgi is Python 3 compatible -
>>>> wouldn't you run into the described codecs problem with 3.x if you use
>>>> Unicode strings?
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "modwsgi" group.
>>>> To post to this group, send email to [email protected].
>>>> To unsubscribe from this group, send email to 
>>>> [email protected].
>>>> For more options, visit this group at 
>>>> http://groups.google.com/group/modwsgi?hl=en.
>>>>
>>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "modwsgi" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to 
>> [email protected].
>> For more options, visit this group at 
>> http://groups.google.com/group/modwsgi?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to