【问题标题】:Cannot install external package insde python when uwsgi runuwsgi运行时无法安装外部包insde python
【发布时间】:2020-01-16 09:27:50
【问题描述】:

我在 uwsgi 中运行一个 Python 应用程序,然后我的应用程序尝试使用以下代码安装一个外部包:

subprocess.call([sys.executable, "-m", "pip", "install", module])

但是有一个错误:

无法从 pip 加载配置

这是我的uwsgi配置:

[uwsgi]
module = bin.run:app
manage-script-name = true
virtualenv = venv
master = true
processes = 5
http-socket = 0.0.0.0:9002
vacuum = true
die-on-term = true
enable-threads=true
lazy=true

我该如何解决这个问题?我试过flask run,它工作正常。

【问题讨论】:

    标签: python flask uwsgi


    【解决方案1】:

    这是因为sys.executable 不是像通常那样的python。它改为指向uwsgi 可执行文件。所以你的代码实际上是在尝试启动另一个uwsgi 进程。

    uwsgi 的第一个参数是要从 (https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html#ini-files) 加载的配置文件。

    为方便起见,uWSGI 专门识别裸 .ini 参数,因此调用 uwsgi myconf.ini 等于 uwsgi --ini myconf.ini

    由于你给 uwsgi 的第一个参数是 pip,它会尝试加载一个名为 pip 的文件,但不能,然后死掉。

    对我来说,硬编码“python”(或“python3”,如果它在你的系统上的话)作为可执行文件运行修复它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2021-01-23
      • 2018-09-19
      相关资源
      最近更新 更多