【问题标题】:Getting python2.7 path in django app for subprocess call在 django 应用程序中获取 python2.7 路径以进行子进程调用
【发布时间】:2016-06-07 20:25:51
【问题描述】:

我正在使用 Linux。我正在尝试从 django 视图中的函数运行守护程序。我想从 Djangp 应用程序的视图中运行 shell 命令。我正在使用python 2.7。命令需要python2.7路径。

我的应用就像即插即用。因此,在要安装它的系统上,python 可能安装在不同的位置。所以我想让python路径动态化。

命令将是

    usr/bin/python2.7 filename.py --start

在我的系统路径上是 usr/bin/python2.7。

我发现以下使用 os.

在 python shell 上,我尝试了以下代码,得到了我想要的

    import os
    getPyPath  = os.popen('which python2.7', 'r')
    pyPath = getPyPath.read()
    pyPath.rstrip()

我得到了预期的 o/p,如下所示

usr/bin/python2.7

所以现在如何获取此代码是 django app view function & run 它,以便我可以在变量中获取 python 路径。

我找到了 python 子进程模块调用,我们可以使用 shell=True 通过 shell 运行命令。

那么我可以使用子进程调用在 django 视图函数中运行上述代码吗??

如果不是在函数 django 视图中获取变量中的 python 路径的其他方法是什么。

提前致谢。

【问题讨论】:

  • 这是一个奇怪的要求。您打算在多少个不同的系统中部署此应用程序?您可以通过简单的硬编码路径轻松下车。
  • 这是我开发和提交的任务。关于它将安装在哪里我不知道。硬编码在那里不起作用

标签: linux django python-2.7 shell


【解决方案1】:

要查看当前 Python 解释器的完整路径,请使用 sys.executable

import sys

print(sys.executable)

【讨论】:

  • 它显示 '/usr/bin/python'。我想要版本特定的路径。
  • @Rohit 这为您提供了“当前 Python 解释器的完整路径”,正如 cleary Ian 所说。它会显示您正在使用的任何 python 解释器。
  • 我试过了,但它不起作用。我在 aws ec2 实例上尝试过。 /opt/.../....某处安装了python2.7。这是给/usr/bin/python。
  • 使用 virtualenv 会影响这个吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多