【问题标题】:How to get mod_wsgi to pick up my virtualenv如何让 mod_wsgi 拿起我的 virtualenv
【发布时间】:2017-07-28 10:57:20
【问题描述】:

我对使用 Flask 很陌生-

根据http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/

在“使用虚拟环境”标题下 我读到:

对于 Python 3,将以下行添加到 .wsgi 文件的顶部:

activate_this = '/path/to/env/bin/activate_this.py'
with open(activate_this) as file_:
    exec(file_.read(), dict(__file__=activate_this)) This sets up the load paths according to the settings of the virtual environment.

请记住,路径必须是绝对的。

要激活我的 venv,我使用来自 linux 的命令:

 my_env/bin/activate

我查看了 my_env/bin/ 目录,但没有看到任何 .py 文件。 我是否想在 my_env/bin/ 中创建一个将由 .wsgi 文件调用的 .py 文件?

【问题讨论】:

    标签: python flask virtualenv mod-wsgi


    【解决方案1】:

    我遇到了同样的问题,解决方案其实很简单。您需要安装libapache2-mod-wsgi-py3 而不是libapache2-mod-wsgi。后者适用于 python 2。

    然后您可以通过将环境的站点包添加到系统路径来激活您的环境。例如,对于我(使用 venv),我可以通过将以下行添加到我的 *.wgsi 文件中来做到这一点。

    sys.path.insert(0,"/path/to/venv/lib/python3.8/site-packages")
    

    【讨论】:

      【解决方案2】:

      如果您使用的是 mod_wsgi,请阅读以下文档:

      TLDR:

      From Documentation - to use a Python virtual environment, all you need to do is add the python-home option to the WSGIDaemonProcess directive resulting in

      将此行添加到您的虚拟主机以启用 virtualenv

      WSGIDaemonProcess application_name python-home=/path/to/app/venv

      【讨论】:

      • 感谢格雷厄姆 - 经过几个小时的集中阅读文档以及三杯浓缩咖啡,确认站点 .conf 和项目 .wsgi 是正确的,我可能会发现问题 - apache2/错误.log 报告“Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7.12 已配置”我正在使用 python3。在我的 venv 中,我 pip 安装了 mod_wsgi 但得到异常:'缺少 Apache httpd 服务器包。 % APXS) RuntimeError: 'apxs' 命令似乎未安装或不可执行。
      • 您需要为 Apache 安装 'dev' 包。请参阅pypi.python.org/pypi/mod_wsgi中的系统要求
      • 按照文档确定,安装 apache2-dev 并检查它是否可以在我的 python 3 venv 中使用 mod_wsgi-express start-server-
      • 我看到了威士忌瓶...开始喝酒的有力建议 ;-) 服务 apache2 重新启动后,我仍然看到“Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/2.7. 12已配置”在日志文件的尾部。
      • 您需要卸载 mod_wsgi 的任何系统包,并在完成pip install mod_wsgi 后执行pypi.python.org/pypi/mod_wsgi 的“连接到 Apache 安装”一节中提到的步骤您是否完成了?
      【解决方案3】:

      在不使用晦涩的脚本做某种“魔术”的情况下,我发现的最好和最简洁的方法是简单地以环境中的 python 解释器的引用开始 .wsgi。用这个来启动你的 .wsgi ,之后就不需要摆弄了:

      #!/path/to/your/venv/bin/python
      

      我希望我在花费数小时未成功之前考虑过这个简单的解决方案 - 并希望其他人提到它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-30
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        • 2019-01-19
        • 1970-01-01
        相关资源
        最近更新 更多