如何在#中标识Python版本!使用环境变量
我有一个问题,这是由我们的封装设计引起的。到目前为止,我们的许多脚本都是用bash编写的,因此#!/bin/bash
总是很简单。如何在#中标识Python版本!使用环境变量
但是现在我们正在用python重写我们的脚本,这有点困难。我们提供了特定版本的python(以避免客户端安装环境中的版本差异破坏我们的实现)。由于python的特定版本位于已安装的目录结构中,我需要路由到它。
但是我不认为#!语句可以接受执行该文件的shell的环境变量(尝试并得到一个糟糕的解释器)。
如:
在foo.py
我#!$dirloc/wherepythonlives/python
在bash shell中我执行的文件,并得到了坏的解释。 有没有一种方法潜入一个环境变量到#!
行?或者我将不得不依赖明确的路径?我们希望在一个环境中支持多种版本的软件(这可能意味着多个Python版本),所以我希望以某种方式将Python的!#
语句保存在我们安装的目录级别内。
回答:
一种常见的方式做,这是使用env
程序:
#!/usr/bin/env python
这将导致env
沿着一个名为python
二进制PATH
环境看。
回答:
这一难题的最佳解决方案是使用的distutils(setup.py,这对于你自动创建正确存根,对于一些给定的“控制台入口点”)和的virtualenv(处理“分离的多个安装”的一部分)。
回答:
我不知道能够在shebang中使用环境变量。您可以使用相对路径虽然
#! ../../usr/bin/python
编辑: 你总是可以使用ENV指定要使用特定版本。那么,如果该版本可在$ PATH中找到它会以其他方式使用该脚本将失败
#! /usr/bin/env python2.7
或者你可以做的入口点一个通用脚本来代替。
如
#! /usr/bin/env bash if [[ $MYPYTHON ]]
then
$MYPYTHON main.py
else
echo error message
fi
回答:
我想这一切都取决于你的脚本将如何以及在何种环境中调用。您可以使用#!/usr/bin/env python
来调用您的脚本,这将允许您通过操纵环境的PATH
来控制使用哪个python。
你总是可以指定一个包装脚本解释器,运行相对脚本位置蟒蛇可执行文件:
FOO。潘岳:
#!/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" "[email protected]"
以上是 如何在#中标识Python版本!使用环境变量 的全部内容, 来源链接: utcz.com/qa/257873.html