shell – 如何使用shebang来区分python版本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了shell – 如何使用shebang来区分python版本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1648字,纯文字阅读大概需要3分钟。
内容图文
![shell – 如何使用shebang来区分python版本](/upload/InfoBanner/zyjiaocheng/956/5339b19a5b9847da9308401f68bad2fe.jpg)
我们有许多不同版本的python,我们模块加载.这些可以是一个vanilla python 2或3安装,或者是一个带有大量额外库的anaconda版本.
目前,如果我编写一个脚本,要求我使用特定的python安装(我发现使用模块加载python / ana;哪个python),我必须#!到明确的道路.例如
#!/path/to/anaconda/1.7.0/64/bin/python
指向当前模块加载python / anaconda时加载的当前版本的python.
这个模块不是我管理的,所以如果有人更新模块使用/path/to/anaconda/1.7.1/64/bin/python然后删除1.7.0,我的脚本将停止工作.
脚本是否有标准方法来指定要使用的解释器和应从中加载解释器的模块?就像是
#!/blah/module_env python/anaconda python -c
或者,是否有任何其他选项不需要root访问权限?我们的企业linux机器被锁定,因此我们无法安装我们自己的软件,或者更改/使用/ bin / env配置,只是模块加载已经可用的软件.
解决方法:
我不熟悉你的那个模块软件,但看起来你应该可以做类似的事情:
#! /bin/sh -
'eval' '. "$MODULES_HOME/init/sh"; module load something || exit; exec python -- "$0" "$@"'
python script follows
这将首先由sh解释,然后将调用模块并在相同的脚本和相同的参数上执行python.
python会忽略前两行,第一行是因为它是注释,第二行是因为它只是两个字符串的串联.
更普遍:
#! /bin/sh -
'eval' 'single-line-of-shell-code-with-no-single-quote; exec python -- "$0" "$@"'
是一种通用的方法来拥有一个可执行的python脚本,其中预先运行一些前导shell代码.对于多行shell代码,您还可以使用python的”’…”’引号:
#! /bin/sh -
':' '''python script with shell preamble'
arbitrary shell code here provided it doesn't contain
a sequence of 3 single quotes.
exec python -- "$0" "$@"
'''
print("Hello World")
所以在这里:
#! /bin/sh -
':' '''python script with shell preamble'
"$MODULES_HOME/init/sh"
module load something || exit
exec python -- "$0" "$@"
'''
python script follows
内容总结
以上是互联网集市为您收集整理的shell – 如何使用shebang来区分python版本全部内容,希望文章能够帮你解决shell – 如何使用shebang来区分python版本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。