On 13 May 2024, at 2:02 PM, A McBain <[email protected]> wrote: > > Hi, I looked at previous messages and others on StackOverflow but none seem > to solve my issue. > > I have an app I wrote working perfectly fine under Python 3.11 with mod_wsgi > and Apache 2. > > I did a bunch of development on the app (upgraded django, new features), and > set up a new checkout of that on my server, with its own virtual environment > (using venv). It uses effectively the same config (different subdomain) in > Apache2 as the original older copy, but the new one fails with an import > error while the old one is still chugging along.
When you say "old one is still chugging along" can you confirm you are saying that the existing one is still running on the same server at the same time, or it is a completely new server you have set up. > I double checked the instructions at > https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/modwsgi/ > > I've also re-verified the mod_wsgi I installed (via pip) matches the Python > version I'm using (both are Python 3.11). > > I also tried: > Removing the python-path argument > The mod_wsgi docs suggest I don't need that if I specify python-home? Removing python-path if it refers to site-packages directory of virtual environment specified to python-home is okay as path would be redundant. If python-path is used to tell it where your Django project is, that still needs to stay. > Setting WSGIApplicationGroup to %{GLOBAL} That is recommended, but if you are hosting multiple WSGI applications on the same server, they would need to be delegated to different mod_wsgi daemon process groups. > Unfortunately the error didn't change at all after trying those. > > I've attached the relevant apache2 config section which includes all the > mod_wsgi-setup (the rest is just redirects, ssl stuff, aliases, etc.) > > I also attached the error from the log. It looks like it's trying to use the > system Python instead of the one that exists in my .env (virtual environment) > directory. The virtual environment doesn't have a copy of Python stdlib files so they are still imported from the system Python the virtual environment was created from. The virtual environment effectively only has its own site-packages directory. > I'm banging my head as to why this worked before but not now so any help is > much appreciated. Thank you! 🙂 > > Other details: > wsgi.prod.py is the default wsgi.py, just modified to load settings.prod.py > The server is Devuan Daedalus At the start of your WSGI script file add: import sys print('sys.prefix', repr(sys.prefix)) print('sys.path', repr(sys.path)) and check Apache logs for what paths it is using. Compare that to the working site. Post what you learn from that. 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 view this discussion on the web visit https://groups.google.com/d/msgid/modwsgi/7184C263-1522-4583-A98B-EC9806B0FA66%40gmail.com.
