3

I'm running Django website on apache.

Here is the tail of my httpd.conf file.

ServerName 127.0.0.1:8080


# Django Project
LoadFile "c:/python39/python39.dll"
LoadModule wsgi_module "c:/python39/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win_amd64.pyd"
WSGIPythonHome "c:/python39/"
WSGIScriptAlias / "C:/pd_videowebapp/mysite/wsgi.py"
WSGIPythonPath "C:/pd_videowebapp/"

<Directory "C:/pd_videowebapp/mysite/">
    <Files wsgi.py>
        Require all granted
    </Files>
</Directory>

Alias /static "C:/pd_videowebapp/static/"
<Directory "C:/pd_videowebapp/static/">
    Require all granted
</Directory>

And here is the tail of the error.log file:

The 'Apache2.4' service is restarting.
Starting the 'Apache2.4' service
The 'Apache2.4' service is running.
pm_winnt:notice] [pid 4472:tid 420] AH00455: Apache/2.4.51 (Win64) mod_wsgi/4.9.0 Python/3.9 configured -- resuming normal operations
[Wed Oct 13 08:31:28.026005 2021] [mpm_winnt:notice] [pid 4472:tid 420] AH00456: Apache Lounge VS16 Server built: Oct  7 2021 16:27:02
[Wed Oct 13 08:31:28.026005 2021] [core:notice] [pid 4472:tid 420] AH00094: Command line: 'C:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Wed Oct 13 08:31:28.041641 2021] [mpm_winnt:notice] [pid 4472:tid 420] AH00418: Parent: Created child process 2676
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:\\Python39'
  sys.base_exec_prefix = 'C:\\Python39'
  sys.platlibdir = 'lib'
  sys.executable = 'C:\\Apache24\\bin\\httpd.exe'
  sys.prefix = 'C:\\Python39'
  sys.exec_prefix = 'C:\\Python39'
  sys.path = [
    'C:\\Python39\\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 0x00001bd8 (most recent call first):
<no Python frame>
[Wed Oct 13 08:31:28.385413 2021] [mpm_winnt:crit] [pid 4472:tid 420] AH00419: master_main: create child process failed. Exiting.
xralf
  • 3,312
  • 45
  • 129
  • 200

1 Answers1

4

For Windows 10 users:

  1. Press Windows logo on Toolbar.
  2. Type and open Edit the system environment variables.
  3. In Advance tab press Environment Variables button.
  4. For System variables press New button.
  5. Variable name will be PYTHONHOME and Variable value will the path where the python.exe is located (i.e. c:/users/administrator/anaconda3/envs/my_env_name). Then press OK.
  6. Again for System variables press New button.
  7. Variable name will be PYTHONPATH and Variable value will the path of site-packages folder (i.e. C:/Users/Administrator/anaconda3/envs/my_env_name/Lib/site-packages). Then press OK.
isifzade
  • 480
  • 1
  • 5
  • 16
  • 1
    I accept this answer, because I can't test it now. The server runs already on Ubuntu. – xralf Nov 12 '21 at 20:11
  • 1
    This did work for me, but I didn't want to set my system wide variables to point to a specific conda environment. Instead, in the apache httpd.conf file, you can specify both variables using `WSGIPythonHome` and `WSGIPythonPath` with the same paths as describe in the answer. – Tim Child Mar 19 '22 at 19:51
  • Globally setting `PYTHONHOME` (or even `PYTHONPATH`, depending on what's there) is asking for trouble. If you really need to set them, doing so in the specific place they're needed as suggested by @TimChild is the way to go. – Zachary Ware Feb 24 '23 at 17:03