【问题标题】:Using alias for changing the default python version使用别名更改默认 python 版本
【发布时间】:2020-02-13 09:30:12
【问题描述】:

想知道在终端中使用alias更改默认python版本对后续在脚本中调用python是否有积极影响?

比如我用

$ alias python=python36
$ ./run_program

现在假设 run_program 是一个调用多个嵌套脚本的脚本,其中的命令是 python foo.py。他们会执行python36 还是python2

或者alias 只影响当前 shell 中的直接 python 命令?

【问题讨论】:

  • 子shell中没有别名,最好使用函数
  • 那么,系统范围的解决方案是什么?
  • 可能只是搜索 python,whereis python。并将其替换为 whereis python3 返回的任何内容。顺便说一句,这是一个非常糟糕的想法,但它应该可以解决问题。像mv /usr/bin/python3 /usr/bin/python 这样的东西,如果在此之后系统没有被丢弃,我会感到惊讶。您可能应该考虑使用虚拟环境而不是弄乱系统的 python 安装。
  • @mahmood:如果您想在系统范围内将python2 覆盖为python36,请使用:python() { python36 "$@"; }; export -f python

标签: python bash terminal


【解决方案1】:

alias 不会导出到子 shell。为此目的最好使用函数。如果您想在系统范围内将 python2 覆盖为 python36,请在 $HOME/.bashrc 中使用此代码:

python() { python36 "$@"; }

export -f python

然后使用以下命令检查任何脚本中的 python 版本:

python -V

【讨论】:

    【解决方案2】:

    请勿在您的系统中执行此操作

    只是出于好奇而尝试过。它确实有效,不确定是什么坏了。

    $ python --version
    Python 2.7.12
    $ sudo cp /usr/bin/python /usr/bin/python.bak
    $ sudo cp /usr/bin/python3 /usr/bin/python
    $ python --version
    Python 3.7.4
    

    而且,因为我对找出坏掉的东西不感兴趣:

    $ sudo mv /usr/bin/python.bak /usr/bin/python
    

    【讨论】:

    • 我没有 root 访问权限。可能虚拟环境是最好的选择。我想可能有更好的主意。
    • 是的,这完全是邪恶的。不要这样做。但是,由于在 Linux 中可以为所欲为,因此您可以做到。但不要这样做。
    • 虚拟环境更好的主意。
    • @chepner 当然可以。甚至不能讨论。
    猜你喜欢
    • 2015-12-05
    • 2018-04-10
    • 1970-01-01
    • 2011-08-16
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多