我的linuxbox上有两个版本的python:
$python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ /usr/local/bin/python2.7
Python 2.7.3 (default, Oct 8 2013, 15:53:09)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ which python
/usr/bin/python
$ ls -al /usr/bin/python
-rwxr-xr-x. 2 root root 4864 Jul 10 22:49 /usr/bin/python
我怎样才能使2.7成为默认版本,所以当我输入python
时它会让我进入2.7?
您可能实际上并不想更改默认的Python。
你的发行版在/usr/bin
中安装了一个标准系统Python,并且可能有依赖于它的脚本,并由#! /usr/bin/env python
选择。你通常可以在2.7中运行Python 2.6脚本,但你想冒风险吗?
最重要的是,使用/usr/bin
进行操作可能会破坏包管理器管理包的能力。并且更改PATH
中目录的顺序将影响除Python之外的许多其他内容。 (事实上,将/usr/local/bin
放在/usr/bin
之前更为常见,这可能是你真正想要的 - 但如果你有相反的方式,那么可能是有充分理由的。)
但是当您键入python
时,您无需更改默认Python以使系统运行2.7。
首先,您可以设置shell别名:
alias python=/usr/local/bin/python2.7
如果你希望更改是持久的,请在提示符下键入,或者将其放在~/.bashrc
中,现在当你键入python
时它会运行你选择的2.7,但是当你系统上的某个程序尝试使用/usr/bin/env python
运行脚本时它会运行标准2.6。
或者,只需从2.7(或不同项目的单独的venv)中创建一个virtual environment,并在venv中进行工作。
将/usr/local/bin
添加到列表前面的PATH
环境变量中,而不是/usr/bin
。
通常,这是在shell的rc文件中完成的,例如对于bash,你会把它放在.bashrc
:
export PATH="/usr/local/bin:$PATH"
这将导致你的shell首先查看python
中的/usr/local/bin
,然后再与/usr/bin
中的/usr/local/bin/python
进行查找。
(当然,这意味着你还需要让python2.7
指向$ python --version
- 如果它还没有,你需要对其进行符号链接。)
通过以下方式验证python的当前版本:
$ ll /usr/bin/python
然后检查python是哪个文件的符号链接。
lrwxrwxrwx 1 root root 9 Jun 16 2014 /usr/bin/python -> python2.7*
输出Ex:
$ ls /usr/bin/python*
检查其他可用的python版本:
/usr/bin/python /usr/bin/python2.7-config /usr/bin/python3.4 /usr/bin/python3.4m-config /usr/bin/python3.6m /usr/bin/python3m
/usr/bin/python2 /usr/bin/python2-config /usr/bin/python3.4-config /usr/bin/python3.6 /usr/bin/python3.6m-config /usr/bin/python3m-config
/usr/bin/python2.7 /usr/bin/python3 /usr/bin/python3.4m /usr/bin/python3.6-config /usr/bin/python3-config /usr/bin/python-config
输出Ex:
vim ~/.bashrc
如果想将当前版本的python更改为3.6版本编辑文件〜/ .bashrc:
alias python=/usr/local/bin/python3.6
在文件末尾添加以下行并保存:
$ sudo apt-get install python3.6 python3.6-dev
$ sudo curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python3.6
$ sudo easy_install pip
为python 3.6安装pip
$ pip3 -V
在成功时,检查点的当前版本:
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.6)
输出Ex:
e.g.
wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local/
make && make altinstall
所有操作系统都带有默认版本的python,它位于/ usr / bin中。操作系统附带的所有脚本(例如yum)都指向此版本的python驻留在/ usr / bin中。当你想安装新版本的python时,你不想破坏现有的脚本,这些脚本可能不适用于新版本的python。
正确的方法是将python安装为备用版本。
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
现在通过这样做,像yum这样的现有脚本仍然可以使用/ usr / bin / python。你的默认python版本将是/ usr / local / bin中安装的版本。即当你输入python时你会得到2.7.3
这是因为。 $ PATH变量在usr / bin之前有/ usr / local / bin。
export PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
如果python2.7仍然不能作为默认的python版本生效,那么你需要这样做
which python
//output:
/usr/bin/python
cd /usr/bin
ls -l
输入命令
lrwxrwxrwx 1 root root 9 Mar 7 17:04 python -> python2.7
在这里你可以看到这样的东西
sudo rm -r python
您的默认python2.7是软链接到文本'python'
所以删除softlink python
ls -l
然后重试上面的命令
-rwxr-xr-x 1 root root 3670448 Nov 12 20:01 python2.7
你可以看到软链接被删除
python
然后为python3.6创建一个新的softlink
ln -s /usr/bin/python3.6 python
然后在终端中尝试命令//output:
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
help
输入copyright
,credits
,license
或qazxswpoi以获取更多信息。
我猜你已经手动安装了2.7版本,而2.6来自一个软件包?
简单的答案是:卸载python包。
更复杂的是:不要在/ usr / local中手动安装。用2.7版本构建一个包然后升级。
包处理取决于您使用的分发。