Hi, I just wanted to reply in case anyone else finds this via Google, as I have. I'm also trying to get mod_wsgi to play nice with EPD. Although it seems to ignore WSGIPythonHome, what worked for me is putting the following lines in /etc/apache2/envvars:
PYTHONHOME=/opt/epd-7.3-2 export PYTHONHOME I found this suggestion here: http://osdir.com/ml/modwsgi/2011-05/msg00110.html Edit the prefix path as necessary, of course. It has made the 'pydebug' errors go away for me. Sander On Friday, June 14, 2013 9:47:18 PM UTC+2, ultra909 wrote: > > I am just going to forget about EPD and go with vanilla python... case > closed! > > On Friday, June 14, 2013 5:23:20 AM UTC+1, Graham Dumpleton wrote: >> >> If this a new report of EPD issues, confusing because you are following >> up to past discussion, I think we may have ascertained that EPD Python >> distribution somehow breaks the Python API that is used by embedded systems >> and whatever change they have made is prohibiting the overriding of Python >> home via the C API. >> >> Thus it is necessary so set the PYTHONHOME environment variable in the >> startup scripts for Apache. >> >> If EPD have broken embedding, it is quite annoying. >> >> Graham >> >> On 13/06/2013, at 9:04 PM, ultra909 <[email protected]> wrote: >> >> So I have just created a brand new Ubuntu server instance and installed >> EPD on it under a new user, as per the instructions here: >> >> >> https://support.enthought.com/entries/23419907-Getting-Started-with-EPD-on-Linux >> >> >> I have then installed mod_wsgi 3.4 from source as per the steps above. >> >> Then I created a mod_wsgi.load file in mods-available with the single line >> >> LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so >> >> >> and a symbolic link to it from mods-enabled. >> >> >> EPD Python executable *is* in the PATH for the Apache user: >> >> >> prophet@www2:/etc/apache2/mods-available$ echo $PATH >> >> /home/prophet/workspace/python/epd-7.3-2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games >> >> >> So in theory, WSGIPythonHome should not need to be set? >> >> >> When I restart Apache2 service, I get the same exact same error... >> >> >> Ok, so now I create a mod_wsgi.conf file in mods-available: >> >> >> <IfModule mod_wsgi.c> >> >> >> WSGIPythonHome /home/prophet/workspace/python/epd-7.3-2 # <-- value of >> sys.prefix >> >> >> </IfModule> >> >> >> >> >> And sym link from mods-enabled. >> >> >> When I restart Apache2 service, I get the same exact same error... >> >> >> Traceback (most recent call last): >> >> File "/usr/lib/python2.7/site.py", line 562, in <module> >> >> main() >> >> File "/usr/lib/python2.7/site.py", line 544, in main >> >> known_paths = addusersitepackages(known_paths) >> >> File "/usr/lib/python2.7/site.py", line 271, in addusersitepackages >> >> user_site = getusersitepackages() >> >> File "/usr/lib/python2.7/site.py", line 246, in getusersitepackages >> >> user_base = getuserbase() # this will also set USER_BASE >> >> File "/usr/lib/python2.7/site.py", line 236, in getuserbase >> >> USER_BASE = get_config_var('userbase') >> >> File "/usr/lib/python2.7/sysconfig.py", line 577, in get_config_var >> >> return get_config_vars().get(name) >> >> File "/usr/lib/python2.7/sysconfig.py", line 476, in get_config_vars >> >> _init_posix(_CONFIG_VARS) >> >> File "/usr/lib/python2.7/sysconfig.py", line 337, in _init_posix >> >> makefile = _get_makefile_filename() >> >> File "/usr/lib/python2.7/sysconfig.py", line 331, in _get_makefile_filename >> >> return >> os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), "config" >> + (sys.pydebug and "_d" or ""), "Makefile") >> >> AttributeError: 'module' object has no attribute 'pydebug' >> >> >> N.B. I have not created any site content or config on this new box yet. >> >> >> On Friday, May 17, 2013 1:03:22 AM UTC+1, Graham Dumpleton wrote: >>> >>> On first glance, yes, looks okay. >>> >>> If this is still not working, then set LogLevel in Apache to debug. With >>> that done mod_wsgi should log messages to the Apache error log about when >>> it is setting the Python home location to and what. That way you can >>> confirm it is using what you told it to. >>> >>> Graham >>> >>> On 17/05/2013, at 12:41 AM, Matthew O'Connell <[email protected]> >>> wrote: >>> >>> So mod_python is not installed on the server and I have already the >>> following two apache config files... >>> >>> >>> /etc/apace2/mods-available/mod-wsgi.load: >>> >>> LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so >>> >>> >>> /etc/apace2/mods-available/mod-wsgi.conf: >>> >>> <IfModule mod_wsgi.c> >>> >>> WSGIPythonHome /home/apache_user/workspace/python/current >>> >>> </IfModule> >>> >>> >>> Looks correct? >>> >>> >>> On 16 May 2013, at 00:28, Graham Dumpleton <[email protected]> >>> wrote: >>> >>> Try adding to the Apache configuration: >>> >>> WSGIPythonHome /home/apache_user/workspace/python/current >>> >>> It is possible that at runtime, because your Python is in a non standard >>> location, that it is picking of the .py files from the standard location >>> rather than where your Python installation is. This will force it to look >>> in the correct location. >>> >>> Note that you MUST not be using mod_python in the same Apache as that >>> will override this and cause it not to work. >>> >>> Graham >>> >>> On 15/05/2013, at 11:25 PM, ultra909 <[email protected]> wrote: >>> >>> Hi Graham, >>> >>> So like Isaac, I am trying to get mod_wsgi to play with the Enthought >>> Python distro on Ubuntu. >>> >>> I have likewise followed the instructions for building with Multiple >>> Python Versions and run the following: >>> >>> make distclean >>> ./configure >>> --with-python=/home/apache_user/workspace/python/current/bin/python >>> LD_RUN_PATH=/home/apache_user/workspace/python/current/lib make >>> sudo make install >>> >>> When I try and start Apache, I just get the following in a loop in the >>> error.log: >>> >>> Traceback (most recent call last): >>> File "/usr/lib/python2.7/site.py", line 562, in <module> >>> main() >>> File "/usr/lib/python2.7/site.py", line 544, in main >>> known_paths = addusersitepackages(known_paths) >>> File "/usr/lib/python2.7/site.py", line 271, in addusersitepackages >>> user_site = getusersitepackages() >>> File "/usr/lib/python2.7/site.py", line 246, in getusersitepackages >>> user_base = getuserbase() # this will also set USER_BASE >>> File "/usr/lib/python2.7/site.py", line 236, in getuserbase >>> USER_BASE = get_config_var('userbase') >>> File "/usr/lib/python2.7/sysconfig.py", line 577, in get_config_var >>> return get_config_vars().get(name) >>> File "/usr/lib/python2.7/sysconfig.py", line 476, in get_config_vars >>> _init_posix(_CONFIG_VARS) >>> File "/usr/lib/python2.7/sysconfig.py", line 337, in _init_posix >>> makefile = _get_makefile_filename() >>> File "/usr/lib/python2.7/sysconfig.py", line 331, in >>> _get_makefile_filename >>> return >>> os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), >>> "config" + (sys.pydebug and "_d" or ""), "Makefile") >>> AttributeError: 'module' object has no attribute 'pydebug' >>> >>> On Monday, 29 April 2013 01:18:55 UTC+2, Graham Dumpleton wrote: >>>> >>>> Since I can't see in the prior discussion mention of the error given by >>>> the traceback, can you go back to square one and explain your specific >>>> problem from the start rather than just assuming it is related to the >>>> prior >>>> one. Not knowing the background of what you are doing makes it hard to >>>> comment. >>>> >>>> Graham >>>> >>>> On 25/04/2013, at 5:28 AM, ultra909 <[email protected]> wrote: >>>> >>>> Hi, >>>> >>>> I have EXACTLY the same problem as you. Have done all that and yet >>>> still get nothing out of Apache other than: >>>> >>>> [Wed Apr 24 15:15:55 2013] [info] mod_wsgi (pid=10234): Python home >>>>>>> /home/strongshell/workspace/python/epd-7.3-1/. >>>>>> >>>>>> [Wed Apr 24 15:15:55 2013] [info] mod_wsgi (pid=10234): Initializing >>>>>>> Python. >>>>>> >>>>>> Traceback (most recent call last): >>>>>> >>>>>> File "/usr/lib/python2.7/site.py", line 562, in <module> >>>>>> >>>>>> main() >>>>>> >>>>>> File "/usr/lib/python2.7/site.py", line 544, in main >>>>>> >>>>>> known_paths = addusersitepackages(known_paths) >>>>>> >>>>>> File "/usr/lib/python2.7/site.py", line 271, in addusersitepackages >>>>>> >>>>>> user_site = getusersitepackages() >>>>>> >>>>>> File "/usr/lib/python2.7/site.py", line 246, in getusersitepackages >>>>>> >>>>>> user_base = getuserbase() # this will also set USER_BASE >>>>>> >>>>>> File "/usr/lib/python2.7/site.py", line 236, in getuserbase >>>>>> >>>>>> USER_BASE = get_config_var('userbase') >>>>>> >>>>>> File "/usr/lib/python2.7/sysconfig.py", line 577, in get_config_var >>>>>> >>>>>> return get_config_vars().get(name) >>>>>> >>>>>> File "/usr/lib/python2.7/sysconfig.py", line 476, in get_config_vars >>>>>> >>>>>> _init_posix(_CONFIG_VARS) >>>>>> >>>>>> File "/usr/lib/python2.7/sysconfig.py", line 337, in _init_posix >>>>>> >>>>>> makefile = _get_makefile_filename() >>>>>> >>>>>> File "/usr/lib/python2.7/sysconfig.py", line 331, in >>>>>>> _get_makefile_filename >>>>>> >>>>>> return >>>>>>> os.path.join(get_path('platstdlib').replace("/usr/local","/usr",1), >>>>>>> "config" + (sys.pydebug and "_d" or ""), "Makefile") >>>>>> >>>>>> AttributeError: 'module' object has no attribute 'pydebug' >>>>>> >>>>>> >>>>>> >>>> Clearly it's still hitting the base system python somehow - can't even >>>> get it to run a simple wsgi to dump out sys variables. My WSGIPythonHome >>>> is >>>> set to the directory above lib and bin... ldd looks all good... any ideas? >>>> >>>> TIA >>>> >>>> On Thursday, 10 January 2013 20:45:26 UTC+1, Isaac Shivvers wrote: >>>>> >>>>> Hi all, >>>>> >>>>> Just a quick bump, bringing this post back to life. >>>>> >>>>> I'm running a similar setup, and had a very similar problem: >>>>> - attempting to run a mod_wsgi application using a specific, custom >>>>> Enthought python build >>>>> - used multiple-python guide >>>>> here<http://code.google.com/p/modwsgi/wiki/InstallationIssues>, >>>>> and it appeared successful >>>>> - but, I still had problems: >>>>> - libraries that should work (numpy) did not >>>>> - sys.version (inside wsgi application) reported default system >>>>> version, not the one I wanted >>>>> >>>>> But, modifying the LD_RUN_PATH with make worked like a charm! >>>>> I re-compiled mod_wsgi, as Graham suggested: >>>>> >>>>> make distclean >>>>> ./configure --with-python=/path/to/python/executable >>>>> LD_RUN_PATH=/path/to/python/lib make >>>>> sudo make install >>>>> >>>>> Thanks for all the work you've put into mod_wsgi! >>>>> -Isaac >>>>> >>>>> >>>>> >>>>> >>>>> On Tuesday, May 3, 2011 4:46:30 PM UTC-7, Graham Dumpleton wrote: >>>>>> >>>>>> On 4 May 2011 03:41, Daniel O'Donovan <[email protected]> wrote: >>>>>> > Thanks for your help Graham, embarrassingly, many of my problems >>>>>> stemmed from using >>>>>> > >>>>>> > $ service httpd restart >>>>>> > >>>>>> > to control my apache daemon rather than >>>>>> > >>>>>> > $ /etc/init.d/httpd restart >>>>>> > >>>>>> > As 'service' will remove some of your environment variables >>>>>> (PYTHONHOME seems to be key - WSGIPythonHome didn't seem to have any >>>>>> effect). >>>>>> >>>>>> You should never rely on environment variables set in user environment >>>>>> being inherited because when box reboots it will fail. >>>>>> >>>>>> As I said before, WSGIPythonHome doesn't help with which shared >>>>>> library is found, only the runtime Python installation prefix. Your >>>>>> comments before suggested sys.path was correct which indicated that >>>>>> WSGIPythonHome was at least doing it job correctly. As per the >>>>>> documented I directed you to, the important value is sys.prefix and >>>>>> what that is set to within mod_wsgi. >>>>>> >>>>>> WSGIPythonHome should work so long as mod_python not loaded, you get >>>>>> the prefix you give it correct, Apache can read the directories for >>>>>> the installation and you haven't managed to inherit user environment >>>>>> variables that screw it all up. >>>>>> >>>>>> >> What do you mean here? Ie., what does patchelf do and how does it >>>>>> >> change the output from ldd on mod_wsgi.so? >>>>>> > >>>>>> > patchelf modifies the dynamic linker and RPATH of ELF executables. >>>>>> Unfortunately setting --with-python= and LD_RUN_PATH had no effect for >>>>>> me, >>>>>> so but a quick >>>>>> > >>>>>> > $ patchelf --set-rpath /lib64:/path/to/my/custom/lib >>>>>> /etc/httpd/modules/mod_wsgi.so >>>>>> > >>>>>> > did the job. - ldd now searches for dynamic libs in /lib64 and >>>>>> /path/to/my/custom/lib and finds the appropriate non-system python. >>>>>> >>>>>> Setting LD_RUN_PATH in user environment when building mod_wsgi should >>>>>> work. I can't say what you have done wrong as you haven't supplied >>>>>> exact logs of what commands you ended up running to build it and what >>>>>> subsequent ldd output was. Also don't know what other user environment >>>>>> variables you had set which could cause problems. >>>>>> >>>>>> Anyway, if you have got it working then doesn't matter I guess. >>>>>> >>>>>> Graham >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "modwsgi" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/modwsgi?hl=en. >>>> For more options, visit https://groups.google.com/groups/opt_out. >>>> >>>> >>>> >>>> >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "modwsgi" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/modwsgi?hl=en. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >>> >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "modwsgi" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/modwsgi/DW0DzFrF1YY/unsubscribe?hl=en. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/modwsgi?hl=en. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "modwsgi" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/modwsgi?hl=en. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "modwsgi" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/modwsgi?hl=en. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> >> >> -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/groups/opt_out.
