如何在WSGI中使用虚拟环境运行Python?

1 投票
1 回答
2188 浏览
提问于 2025-04-18 05:20

我正在尝试在一个沙盒环境中使用WSGI和Apache运行Python。

  1. 我创建了一个虚拟环境:

    virtualenv /var/www/demo-environment --python /usr/bin/python3.3
    
  2. 我还创建了一个名为 /var/www/demo.py 的文件:

    #!/usr/bin/env python
    
    import sys
    
    def application(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/plain')])
        return "Running " + str(sys.version_info)
    
  3. 最后,我像这样修改了Apache的配置:

    WSGIPythonPath /var/www/demo-environment/lib/python3.3/site-packages/
    WSGIDaemonProcess example.com python-path=/var/www/demo-environment/lib/python3.3/site-packages/
    WSGIProcessGroup example.com
    WSGIScriptAlias / /var/www/demo.py
    

当我访问网站的主页时,显示的内容是:Running sys.version_info(major=2, minor=7, micro=5, releaselevel='final', serial=0),这说明Python是可以工作的,但并没有在虚拟环境中运行。

因为这是启用 virtualenv 的错误方法,那正确的方法是什么呢?

1 个回答

1

只需要使用设置 WSGIPythonHome 来指定你的环境的根目录:

WSGIPythonHome /home/grapsus/work/python/env
WSGIScriptAlias /demo /home/grapsus/work/python/demo.py

我修改了你的脚本,让它打印出 sys.path

Running ['/home/grapsus/work/python/env/lib/python2.7', ...

撰写回答