如何更改默认的python版本?

Zhu*_*gqi 90 python macos

我在我的mac中安装了python 3.2.在运行/ Applications/Python 3.2/Update Shell Profile.command之后,令人困惑的是,当我在终端中键入python -V时它说的是Python 2.6.1,如何更改默认的python版本?

nin*_*cko 100

这可能是向后兼容性所希望的.

Python3打破了向后兼容性,调用'python'的程序可能需要python2.您可能有许多程序和脚本,您甚至不知道哪些程序和脚本需要python = python2,并且更改它会破坏这些程序和脚本.

你可能正在寻找的答案是你不应该改变这个.

但是,您可以在shell中创建自定义别名.你这样做的方式取决于shell,但也许你可以做到alias py=python3

如果您对如何启动最新版本的python感到困惑,那么至少Linux上的情况python3会使您的python2安装保持不变(由于上述兼容性原因) ; 因此你可以用python3命令启动python3 .

  • 这是有用的信息,但问题是"如何更改默认的python版本." 我们可以添加一些东西来帮助人们尝试这样做吗? (32认同)
  • > 您可能正在寻找的答案是您不应更改此设置。在这里,我认为这是“我该如何改变这一点”! (3认同)
  • 这个答案是正确的。**不要在系统级别更改“python”所指向的内容,因为如果这样做,您可能会破坏操作系统的重要组件**。相反,使用单独的 Python 3 安装和 virtualen 为自己提供“本地”默认 Python。 (2认同)

Ned*_*ily 42

在你使用python.org安装程序的Mac OS X上,你需要调用Python 3 python3,而不是python.目前保留用于Python 2版本.您还可以使用python3.2专门调用该版本.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*
Run Code Online (Sandbox Code Playgroud)

如果您还从python.org安装了Python 2,它将具有类似的框架bin目录,没有重叠的文件名(2to3除外).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Run Code Online (Sandbox Code Playgroud)

  • 如果我有 python 3.4 和 python 3.7,当我从终端输入 python3 时,它执行 python 3.4 而不是 3.7,如何解决这个问题? (3认同)

Ryo*_*awa 38

检查python 3的位置

$ which python3
/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)

在bash_profile中写别名

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'
Run Code Online (Sandbox Code Playgroud)

重新加载bash_profile

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

确认python命令

$ python --version
Python 3.6.5
Run Code Online (Sandbox Code Playgroud)

  • 这是一个糟糕的解决方案。如已接受的答案中所述,`$ python` 是为 python 2 保留的。由于别名,您在计算机上运行的任何期望 python 2 的程序都会收到 python 3,这可能会产生不可预见的负面后果。 (4认同)

Fre*_*Pow 25

老问题,但另外:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
Run Code Online (Sandbox Code Playgroud)


Ada*_*erg 16

通过将其置于路径上的系统Python之前来更改"默认"Python,例如:

export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

  • 任何系统软件都将使用Python提供的系统的完整路径. (2认同)

Vit*_*cas 10

做正确的事,做正确的事!

--->零打开您的终端,

-首先输入python -V,它可能显示:

Python 2.7.10
Run Code Online (Sandbox Code Playgroud)

-第二个输入python3 -V,它可能显示:

Python 3.7.2
Run Code Online (Sandbox Code Playgroud)

-三次输入where pythonwhich python,它可能显示:

/usr/bin/python
Run Code Online (Sandbox Code Playgroud)

---第四次输入where python3which python3,它可能显示:

/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)

-第五,~/.profile file or ~/.bash_profile在Bash或~/.zshrczsh 下的PATH环境变量文件的底部添加以下行。

alias python='/usr/local/bin/python3'
Run Code Online (Sandbox Code Playgroud)

要么

alias python=python3
Run Code Online (Sandbox Code Playgroud)

- source ~/.bash_profile在Bash或source ~/.zshrczsh 下第六次输入。

-第七步退出终端。

---第八次打开终端,输入python -V,可能显示:

Python 3.7.2
Run Code Online (Sandbox Code Playgroud)

我已经成功地尝试过了。

其他的,~/.bash_profile不是zsh下的那个~/.bash_profile

zsh下的PATH环境变量~/.profile(或~/.bash_file通过)~/.zshrc

帮助你们!

  • 不过,感谢您的指导,当您运行“source ~/.bash_profile”或“source ~/.zshrc”时,您无需退出并重新启动终端即可使更改生效。 (2认同)

小智 8

将 Python 3.5 设置为更高的优先级

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
Run Code Online (Sandbox Code Playgroud)

检查结果

sudo update-alternatives --config python
python -V
Run Code Online (Sandbox Code Playgroud)


Jav*_*eel 5

检查python3的执行路径,它有库

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3
Run Code Online (Sandbox Code Playgroud)

打开 bash_profile 文件并添加别名

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'
Run Code Online (Sandbox Code Playgroud)

重新加载 bash_profile 使修改生效

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

运行 python 命令并检查它是否正在使用 python3 加载

$ python --version
Python 3.6.5
Run Code Online (Sandbox Code Playgroud)