【问题标题】:How to make sudo execute in current python virtual environment?如何让 sudo 在当前的 python 虚拟环境中执行?
【发布时间】:2016-10-13 17:38:46
【问题描述】:

我在 Ubuntu 上的 python 虚拟环境 (venv) 中设置并配置了 django 网站,一切正常。现在为了在端口 80 上运行我的服务器,我需要使用不在虚拟环境上下文中执行的“sudo”,从而引发错误(即没有名为 django 的模块 ...)

有没有办法让“sudo”在python虚拟环境的上下文中执行?!

【问题讨论】:

    标签: python django sudo port80


    【解决方案1】:

    不,您不需要这样做。您不应该尝试在端口 80 上运行开发服务器;如果您要设置生产环境,请使用合适的服务器。

    【讨论】:

    • 正确的服务器是什么意思?试图让 sudo 为某个虚拟环境执行 python(可以访问该虚拟环境之外不可用的包)。例如,gunicorn 或 uwsgi http 服务服务器在您的书中是否不合适?
    • 是,但它仍然不应该在端口 80 上提供服务。您需要像 nginx 这样的反向代理。
    【解决方案2】:

    正如@DanielRoseman 所说,您不应该在生产环境中使用 Django 开发服务器。

    但是如果你需要在80端口上运行开发服务器,你必须直接引用使用虚拟环境python可执行文件。

    sudo ../bin/python manage.py runserver localhost:80
    

    【讨论】:

      【解决方案3】:

      This should be the solution. 即使我真的不建议这样做。如果你在 Python 中需要 sudo,你可能走错路了。

      【讨论】:

        【解决方案4】:

        这成功了:

        $ sudo -- sh -c './venv-bin-path/activate; gunicorn <params> -b 0.0.0.0:80'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多