Opened 20 months ago
Closed 20 months ago
#34439 closed Bug (invalid)
mod_wsgi for django with conda environment in Windows doesn't work
Reported by: | Lorenzo Lo Giudice | Owned by: | nobody |
---|---|---|---|
Component: | HTTP handling | Version: | 3.2 |
Severity: | Normal | Keywords: | mod_wsgi windows apache conda |
Cc: | g.chirico@… | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
This is my first post in stackoverflow.
I'll try to explain to you what I've done with steps and what I've done to try to solve the problems.
# Problem
I'm struggling with the configuration of mod_wsgi for my django project.
When i try to connect to localhost:8001 (port listened by mod_wsgi) I get an infinite loading or a "This site can’t be reached" page.
# What i've done
I have installed apache2.4 with apachelounge (https://www.apachelounge.com/download/) in my C:
drive.
I have installed anaconda (I haven't set conda in path) and I created my environment for my django project (called *production*).
It runs correctly if I run the command python manage.py runserver
(if i go to http://localhost:7000/ (port set to manage.py) it works.
I installed mod_wsgi in my conda environment with pip install mod-wsgi
.
# Files
*httpd.conf* (C:\Apache24\conf\httpd.conf)
ServerName localhost Listen 8001 ... LoadFile "C:/Users/my_name/anaconda3/envs/production/python39.dll" LoadModule wsgi_module "C:/Users/my_name/anaconda3/envs/production/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win_amd64.pyd" WSGIPythonHome "C:/Users/my_name/anaconda3/envs/production" WSGIScriptAlias / "C:/Users/my_name/my_path/Analyser/wsgi.py" <Directory "C:/Users/my_name/my_path/Analyser"> <Files wsgi.py> Require all granted </Files> </Directory> LogLevel info WSGIApplicationGroup %{GLOBAL}
*wsgi.py* (C:/Users/my_name/my_path/Analyser/wsgi.py)
import os import sys from django.core.wsgi import get_wsgi_application # add the project folder to the path (otherwise it says (core: ModuleNotFound) _BASE_DIR = r'C:\Users\my_name\my_path\Analyser' if _BASE_DIR not in sys.path: sys.path.append(_BASE_DIR) os.environ['DJANGO_SETTINGS_MODULE'] = 'core.settings' os.environ.setdefault("DJANGO_SETTINGS_MODULE", "core.settings") # set CRYPTOGRAPHY_OPENSSL_NO_LEGACY to True otherwise it says OpenSSL... os.environ.setdefault("CRYPTOGRAPHY_OPENSSL_NO_LEGACY", "1") print(f'checkpoint 1') application = get_wsgi_application() print(f'checkpoint 2')
*settings.py* (C:/Users/my_name/my_path/Analyser/core/settings.py)
WSGI_APPLICATION = 'wsgi.application' # other stuff from split_settings.tools import include include('config/*.py',)
# Issue 1: No module named 'encodings'
This site can't be reached when going to localhost:8001
[Issue1: This site can't be reached](https://i.stack.imgur.com/i0p9r.png)
*error.log*
Python path configuration: PYTHONHOME = (not set) PYTHONPATH = (not set) program name = 'python' isolated = 0 environment = 1 user site = 1 import site = 1 sys._base_executable = 'C:\\Apache24\\bin\\httpd.exe' sys.base_prefix = 'C:\\Users\\my_name\\anaconda3\\envs\\production' sys.base_exec_prefix = 'C:\\Users\\my_name\\anaconda3\\envs\\production' sys.platlibdir = 'lib' sys.executable = 'C:\\Apache24\\bin\\httpd.exe' sys.prefix = 'C:\\Users\\my_name\\anaconda3\\envs\\production' sys.exec_prefix = 'C:\\Users\\my_name\\anaconda3\\envs\\production' sys.path = [ 'C:\\Users\\my_name\\anaconda3\\envs\\production\\python39.zip', '.\\DLLs', '.\\lib', 'C:\\Apache24\\bin', ] Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding Python runtime state: core initialized ModuleNotFoundError: No module named 'encodings' Current thread 0x00007520 (most recent call first): <no Python frame>
tried with SetEnv in httpd.conf but it didn't work
# did not work SetEnv PYTHONHOME "C:/Users/my_name/anaconda3/envs/production" SetEnv PYTHONPATH "C:/Users/my_name/anaconda3/envs/production/Lib/site-packages"
I added to my environment variables
- PYTHONHOME >> C:\Users\my_name\anaconda3\envs\production
- PYTHONHOME >> C:\Users\my_name\anaconda3\envs\production\Lib\site-packages
Now when i go to localhost:8001 i don't get the same error.
# Issue 2: infinite loading
Infinite loading when going to localhost:8001
*error.log*
[Thu Mar 23 14:01:14.062920 2023] [wsgi:info] [pid 31308:tid 1076] mod_wsgi (pid=31308): Create interpreter 'localhost:8001|'. [Thu Mar 23 14:01:14.065559 2023] [wsgi:info] [pid 31308:tid 1076] mod_wsgi (pid=31308): Adding 'C:/Users/my_name/anaconda3/envs/production/Lib/site-packages' to path. [Thu Mar 23 14:01:14.068564 2023] [wsgi:info] [pid 31308:tid 1076] mod_wsgi (pid=31308): Adding 'C:/Users/my_name/my_path/Analyser' to path. [Thu Mar 23 14:01:14.072611 2023] [wsgi:info] [pid 31308:tid 1076] [client ::1:49573] mod_wsgi (pid=31308, process='', application='localhost:8001|'): Loading Python script file 'C:/Users/my_name/my_path/Analyser/wsgi.py'. [Thu Mar 23 14:01:14.298046 2023] [wsgi:error] [pid 31308:tid 1076] checkpoint 1 [Thu Mar 23 14:01:14.298046 2023] [wsgi:error] [pid 31308:tid 1076] \r
I tried to set WSGIApplicationGroup %{GLOBAL}
in httpd.conf, now i get an Internal Server Error page.
# Issue 3: internal server error (continue of Issue 2)
Now the in the *error.log* appears:
raise RuntimeError(\r [Thu Mar 23 14:09:06.159643 2023] [wsgi:error] [pid 22156:tid 1056] [client ::1:49632] RuntimeError: OpenSSL 3.0's legacy provider failed to load. This is a fatal error by default, but cryptography supports running without legacy algorithms by setting the environment variable CRYPTOGRAPHY_OPENSSL_NO_LEGACY. If you did not expect this error, you have likely made a mistake with your OpenSSL configuration.\r
I tried to set CRYPTOGRAPHY_OPENSSL_NO_LEGACY to True
I tried writing SetEnv CRYPTOGRAPHY_OPENSSL_NO_LEGACY 1
in httpd.conf but it did not work, so
I added os.environ.setdefault("CRYPTOGRAPHY_OPENSSL_NO_LEGACY", "1")
in wsgi.py.
# Issue 4: infinite loading (again...)
When i visit localhost:8001 i get an infinite loading.
*error.log*
[Thu Mar 23 14:23:33.150762 2023] [wsgi:info] [pid 3540:tid 1044] [client ::1:49785] mod_wsgi (pid=3540, process='', application=''): Loading Python script file 'C:/Users/my_name/my_path/Analyser/wsgi.py'. [Thu Mar 23 14:23:33.411332 2023] [wsgi:error] [pid 3540:tid 1044] checkpoint 1 [Thu Mar 23 14:23:33.411332 2023] [wsgi:error] [pid 3540:tid 1044] \r
And now I'm stuck here.
Stackoverflow issue: https://stackoverflow.com/posts/75823890
Change History (1)
comment:1 by , 20 months ago
Description: | modified (diff) |
---|---|
Resolution: | → invalid |
Status: | new → closed |
Please don't use Trac as a support channel. Closing per TicketClosingReasons/UseSupportChannels.