gpt4 book ai didi

python - 使用点斜线运行 python 脚本 ./

转载 作者:太空狗 更新时间:2023-10-30 02:47:44 24 4
gpt4 key购买 nike

我在主目录下安装了两个 python 2.7.3

   one is for Linux:           /home/luban/Linux/Python/2.7.3
another is for Solaris: /home/luban/SunOS/Python/2.7.3

然后我在/home/luban/bin 中创建一个名为“python”的包装器,以便在我在不同系统上工作时调用不同的 python。

[luban@lunbanworks 1] ~ > cat/home/luban/bin/python

#!/bin/sh

CMD=`basename $0`

OS=`uname -s`


CMD_PATH="/home/luban/$OS/Python/2.7.3/bin"


if [ -x "${CMD_PATH}/${CMD}" ];then

export PATH="${CMD_PATH}:${PATH}"

exec ${CMD_PATH}/${CMD} ${1+"$@"}

else

echo "${CMD} is not available for ${OS}" 1>&2

exit 1

fi

[luban@lunbanworks 2] `ls -l /home/luban/bin/python`

-rwxrwxr-x 1 luban lunban 221 Apr 5 19:11 python*

我使用下面的脚本来测试包装器 /home/luban/bin/python

[luban@lunbanworks 3] ~ > cat myscript.py

#!/home/luban/bin/python

myname="lunban"

print "myname is %s" % myname

[luban@lunbanworks 4] chmod +x myscript.py

我想使用./run myscript.py

[luban@lunbanworks 5] ~ >./myscript.py

myname=luban: Command not found.
lpr: Unable to access "myname" - No such file or directory

使用 /home/luban/bin/python myscript.py 可以工作:

[luban@lunbanworks 5] ~ > `/home/luban/bin/python myscript.py`

myname is luban

我把shebang行改成#!/home/luban/Linux/Python/2.7.3/bin/python后,用./就可以执行脚本了.

[luban@lunbanworks 6] ~ >cat myscript.py

#!/home/luban/Linux/Python/2.7.3/bin/python
myname="lunban"

print "myname is %s" % myname

[luban@lunbanworks 7] ~ >./myscript.py

myname is luban

为什么当我在myscript.py开头使用#!/home/luban/Linux/Python/2.7.3/bin/python时,./myscript.py可以工作,

但是如果我在我的 python 脚本中使用包装器 #!/home/luban/bin/python ,使用 ./ 来运行脚本,它不能不工作?

当我只在 #!/home/luban/ 下为 Linux 安装 python 时,我有很多脚本使用 #!/home/luban/bin/python,它们可以使用 ./ 运行,我不想更改它们,

那么,如果我想将包装器 #!/home/luban/bin/python 作为 shebang 行,如何让 ./ 运行 python 脚本?


所得税:

./myscript.pyCentOS 5.4、Bash 3.2.25< 下无法使用包装器 #!/home/luban/bin/python/

今天,我在CentOS 6.4, Bash 4.1.2下测试:

我加了

echo '$0 =' $0
echo '${COMMAND_PATH}/${COMMAND} ${1+"$@"} =' ${COMMAND_PATH}/${COMMAND} ${1+"$@"}

进入包装器#!/home/luban/bin/python进行跟踪。

./myscript.py 使用包装器 #!/home/luban/bin/python

[luban@lunbanworks 20] ./myscript.py 
$0 = /home/luban/bin/python
${COMMAND_PATH}/${COMMAND} ${1+"$@"} = /home/luban/Linux/Python/2.7.3/bin/python ./myscript.py
myname is luban

所以我想当我使用包装器 #!/home/luban/bin/python 时,它可能是 ./ 的 Bash 3.2.25 错误?

最佳答案

您是否考虑过:

#!/usr/bin/env python

这通常对我有用,只要在搜索路径中找到 python。

在您的情况下,您希望您的个人资料在个人资料设置中具有以下内容:

# Adjust for your preferred shell
export PATH=/home/luban/Linux/Python/2.7.3:/home/luban/SunOS/Python/2.7.3:$PATH

然后,当您的 python 脚本使用“#!/usr/bin/env python”shebang 运行时,它会为您找到正确的 python。

关于python - 使用点斜线运行 python 脚本 ./,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15838183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com