在视图中获取 virtualenv 或 python 路径

Posted

技术标签:

【中文标题】在视图中获取 virtualenv 或 python 路径【英文标题】:Get virtualenv or python path in views 【发布时间】:2018-10-18 05:24:39 【问题描述】:

我正在运行一个带有 virtualenv 的 Django 项目,我想查看运行 python 或我正在使用的虚拟环境的路径

目标是将此路径传递给子进程以执行脚本

谢谢

【问题讨论】:

我认为这是多余的,执行脚本的子进程将自动使用与 django 相同的 python venv。 另外,如果你想在同一个环境中运行一个 Python 脚本,为什么不导入它而不是作为一个子进程运行呢? @Ykh 确实,但仅在我的本地机器上,当我打开 prod 时,它选择安装的第一个 python (2.7) 版本并且没有 virtualenv @DanielRoseman 我正在使用子进程,因为我在视图文件中,我想传递一些参数并跟踪标准输出我的脚本是 django-admin 命令 那么你应该使用management.call_command,见the docs。更好的是,重构您的代码,以便管理命令和视图调用一个通用函数。 【参考方案1】:

@DanielRoseman 的想法很棒,我使用 management.call_command 而不是 subprocess,它工作正常,隐式传递了正确的虚拟环境

【讨论】:

【参考方案2】:

你试过request.META吗?

我在那里发现了一些有用的信息。 (我现在使用pyenv,发现PATHPYENV_DIRPYENV_ROOTPYENV_VIRTUAL_ENVVIRTUAL_ENV等等。)

【讨论】:

已经试过了,但是这些变量只有在我在开发环境中时才会给出

以上是关于在视图中获取 virtualenv 或 python 路径的主要内容,如果未能解决你的问题,请参考以下文章

Virtualenv已激活但python仍在运行系统版本

Django 视图层

无法在 aws amazon linux v2 内的 django 视图函数中检索或创建数据库对象

从脚本中获取 virtualenv 的 bin 文件夹路径

Django 1.7 + Django CMS - 从我的仓库中删除迁移文件或在仓库中包含 virtualenv?

virtualenv中或机器中python2.6和2.7版本同时存在时,执行python2.7报错