【问题标题】:Bash alias --> Python 2.7 to Python 3.3Bash 别名 --> Python 2.7 到 Python 3.3
【发布时间】:2015-01-05 23:57:15
【问题描述】:

我正在尝试将 Python 3.4.2 设为 Linux 中的默认版本(目前为 2.7.6)。我对这些东西不是很了解,但是我在网上的几个地方读到过,您可以像这样在~/.bashrc~/.bash_aliases 文件中简单地添加一个别名:

alias python='python3'

我没有 ~/.bashrc~/.bash_aliases 文件。 . .我假设您可以创建它们。我已经这样做了,但是别名似乎不起作用。我错过了什么吗?你需要文件开头的shebang吗?我已经尝试过两种方式。

感谢您提供的任何帮助!

【问题讨论】:

  • 您是否记得source 您创建的文件(或关闭终端并重新打开它们)?

标签: python bash python-2.7 python-3.3


【解决方案1】:

不要这样做!

目前一些 linux 实用程序依赖于python2.x。如果您进行该更改,它可能会破坏您的系统,因为python3.xpython2.x 不向后兼容。除非你完全意识到后果,否则不要这样做!

在这里提出了类似的问题:https://askubuntu.com/questions/103469/how-do-i-change-my-pythonpath-to-make-3-2-my-default-python-instead-of-2-7-2

【讨论】:

  • 是的,永远不要改变这个。使用适用于您的操作系统的系统 Python 或在其旁边安装所需的版本。永远不要给它起别名。
  • 谢谢。抱歉,我看到这是一年前的事了,不知怎的,我从来没有看到你的答案。
  • @laurenll 如果您认为这是正确的答案,您可以接受。
  • 你怎么un-alias?我从.bash_profile 中删除了alias python = 'python3',重新启动了终端,但which python 仍然是v3。
  • 在您的个人帐户中创建别名不会影响任何系统服务。只要您不物理删除或替换系统安装的版本,就可以。
【解决方案2】:

在 bash 文件中,以下内容将不起作用:

别名 python='python3'

别名语法在 bash/sh 脚本执行中不可用。为了使用适用于 python 和 python3 的 bash 执行 python 命令。我编写了一个函数来检查 python3 或 python 是否可用,然后将函数参数传递给本地安装的 python。

示例代码取自在有时没有 python 但安装了 python3 的机器上运行的脚本。

此代码已在 Ubuntu 18 和 16(Windows 子系统 Linux 2)上测试。

#!/bin/bash
function local_python() {
  _python=$(which python)
  _python3=$(which python3)
  python=${_python3:-_python}

  echo $($python -c "$1")
}

curl "http://www.geoplugin.net/json.gp" \
  -X GET \
  -H "Accept: application/json" |
  local_python "import sys, json; print(json.loads(sys.stdin.read())['geoplugin_request'])"

上面的代码可以复制并粘贴到一个 example.sh 文件中,并且应该(只要 url 可用)返回您的 IP 地址。

【讨论】:

  • 为什么你认为 lases 在 Bash 中不可用?对于基本上所有的东西,我当然推荐函数而不是别名。但是在交互式会话中可以使用别名就好了。
  • 另外,useless use of echo 是您要避免的。
猜你喜欢
  • 2018-02-11
  • 2014-01-01
  • 2014-04-29
  • 2013-07-23
  • 2015-01-01
  • 2015-05-10
  • 2013-01-09
  • 2014-02-14
  • 2012-08-17
相关资源
最近更新 更多