【问题标题】:Django system-wide install to virtualenvDjango 系统范围安装到 virtualenv
【发布时间】:2016-11-26 18:34:38
【问题描述】:

我最近使用 DigitalOcean 单击 droplet setup 在线部署了一个应用程序,该程序使用 nginx 和 gunicorn 在 Ubuntu 上设置 Django。它带有一个默认的 django 项目,我已经设法将其更改为我自己的。但是,默认项目不使用 virtualenv,它使用系统范围的安装。因此,只有在系统上安装了所有依赖项时,该应用程序才有效。我知道这一点,因为如果我卸载 django,它会给我一个内部服务器错误。

我想在我的 virtualenv 中使用 python 作为解释器。并参考该环境中的站点包。我试过摆弄 PYTHONPATH 并将 sys.path.append('/home/env/projectname') 添加到 wsgi 文件,但这不起作用。

我怎样才能做到这一点?

/etc/init/gunicorn.conf:

setuid django
setgid django
chdir /home/env/projectname

exec gunicorn \
    --name=prj \
    --pythonpath=prj \
    --bind=127.0.0.1:9000 \
    --config /etc/gunicorn.d/gunicorn.py \
    prj.wsgi:application

【问题讨论】:

    标签: python django virtualenv gunicorn pythonpath


    【解决方案1】:

    尝试将 gunicorn 安装到 virtualenv 并从那里运行它,设置工作目录并传递 wsgi:application。 This tutorial 可以帮助你。 This tutorial 也可能有用。

    【讨论】:

      【解决方案2】:
      1. 不要为 virtualenvs 使用名称“venv”,因为 venv 是一个相似但不同的东西。 “venv”和“virtualenv”是创建隔离环境的不同方式; venv 是新的方式,但它只适用于 Python 3.3 及更高版本,因此 virtualenv 的使用仍然更加广泛。
      2. 为避免混淆,请记住 virtualenv(和 venv,就此而言)的命名错误。它没有什么虚拟的。最好将其称为隔离环境。

      现在,gunicorn 是一个 Python 程序。它不运行您的 Django 项目;它导入您的 Django 项目。所以你不可能在不同的环境中运行 gunicorn 和你的 Django 项目,因为它们实际上是一个程序。在特定隔离环境中运行 Django 项目的方法是在该隔离环境中启动 gunicorn:

      source your_virtualenv_dir/bin/activate    
      exec gunicorn ...
      

      为此,您必须在 virtualenv 中安装 gunicorn,或者您必须在系统范围内安装 gunicorn 并使用 --system-site-packages 创建 virtualenv。

      另见this article of mine

      【讨论】:

      • 我刚刚删除了 venv 并尝试使用此命令。不幸的是没有运气。我编辑了我的帖子并添加了 /etc/init/gunicorn.conf。我觉得我在 pythonpath 位上做错了什么。抱歉,我对 gunicorn 不是很熟悉
      • @zubhav 我根据你提供的新信息修改了我的答案。
      • 谢谢,我终于按照您的建议解决了这个问题。我在我的 virtualenv 中安装了 Gunicorn 并将“exec gunicorn”命令更改为引用 virtualenv:“exec /home/env/bin/gunicorn”,它工作正常。 P.S 没有意识到 venv 和 virtualenv 是两个不同的东西。只是使用 venv 作为俚语哈哈。现在我知道了!
      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      相关资源
      最近更新 更多