Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在中识别Python版本!使用环境变量_Python_Linux_Interpreter - Fatal编程技术网

如何在中识别Python版本!使用环境变量

如何在中识别Python版本!使用环境变量,python,linux,interpreter,Python,Linux,Interpreter,我有一个问题是由我们的封装设计引起的。到目前为止,我们的很多脚本都是用bash编写的,因此/bin/bash总是很简单 然而,现在我们正在用python重写脚本,这有点困难。我们提供了特定版本的python,以避免客户端安装环境中的版本差异破坏我们的实现。因为python的特定版本存在于已安装的目录结构中,所以我需要路由到它 然而我不认为这是一个错误!语句可以接受来自执行FileThreaded并得到错误解释器的shell的环境变量 例如: 在foo.py我有$dirloc/wherepytho

我有一个问题是由我们的封装设计引起的。到目前为止,我们的很多脚本都是用bash编写的,因此/bin/bash总是很简单

然而,现在我们正在用python重写脚本,这有点困难。我们提供了特定版本的python,以避免客户端安装环境中的版本差异破坏我们的实现。因为python的特定版本存在于已安装的目录结构中,所以我需要路由到它

然而我不认为这是一个错误!语句可以接受来自执行FileThreaded并得到错误解释器的shell的环境变量

例如:

在foo.py我有$dirloc/wherepythonlives/python

在bashshell中,我执行了文件,得到了错误的解释器。 有没有一种方法可以将环境变量潜入其中!线路


或者我必须依赖于显式路径?我们希望支持软件的多个版本,这可能意味着在一个环境中有多个python版本,所以我希望以某种方式保留python的版本!我们安装到的目录级别中的语句

执行此操作的常用方法是使用env程序:


这将导致env在路径环境中查找名为python的二进制文件。

执行此操作的常用方法是使用env程序:


这将导致env在路径环境中查找名为python的二进制文件。

解决此难题的最佳方法是使用distutils setup.py,它会自动为您创建正确的存根,对于许多给定的控制台入口点和处理隔离的多安装部分的virtualenv。

此难题的最佳解决方案是使用distutils setup.py,它会自动为您创建正确的存根,对于许多给定的控制台入口点和virtualenv处理隔离的多个安装部分。

我不知道能否在shebang中使用环境变量。不过,您可以使用相对路径

#! ../../usr/bin/python
编辑: 您可以始终使用env指定使用特定版本。然后,如果可以在$PATH中找到该版本,则将使用该版本,否则脚本将失败

#! /usr/bin/env python2.7
或者您可以将入口点改为通用脚本

乙二醇


我不知道能在shebang中使用环境变量。不过,您可以使用相对路径

#! ../../usr/bin/python
编辑: 您可以始终使用env指定使用特定版本。然后,如果可以在$PATH中找到该版本,则将使用该版本,否则脚本将失败

#! /usr/bin/env python2.7
或者您可以将入口点改为通用脚本

乙二醇


我想这一切都取决于如何以及在什么环境中调用脚本。您可以使用脚本调用您的脚本/usr/bin/env-python,它允许您通过操纵环境的路径来控制使用哪种python

您可以始终指定一个包装器脚本作为解释器,该解释器相对于脚本的位置运行python可执行文件:

foo.py:

#!/bin/pyselector

import sys
sys.exit(0)
pyselector:

#!/bin/sh
SCRIPT_PATH="$(readlink -f $1)"
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"

"${SCRIPT_DIR}/my/local/python" "$@"

我想这一切都取决于如何以及在什么环境中调用脚本。您可以使用脚本调用您的脚本/usr/bin/env-python,它允许您通过操纵环境的路径来控制使用哪种python

您可以始终指定一个包装器脚本作为解释器,该解释器相对于脚本的位置运行python可执行文件:

foo.py:

#!/bin/pyselector

import sys
sys.exit(0)
pyselector:

#!/bin/sh
SCRIPT_PATH="$(readlink -f $1)"
SCRIPT_DIR="$(dirname "$SCRIPT_PATH")"

"${SCRIPT_DIR}/my/local/python" "$@"

您还可以编写一个只调用$dirloc/wherepythonlives/python foo.py的sh脚本,而不是直接执行该脚本。您还可以编写一个只调用$dirloc/wherepythonlives/python foo.py的sh脚本,而不是直接执行该脚本。这在使用配置文件后有效,我们必须更改path变量。这是有效的使用配置文件后,我们必须更改path变量。