我遇到了一个问题,当我搜索正确版本的python时,我每次都找到python 3.7:
python3 --version
Python 3.7.0
然后我检查了update-alternatives配置:
sudo update-alternatives --config python3
There are 3 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/local/bin/python3.7 2 auto mode
1 /<HOME_DIR>/Software/anaconda3/bin/python3 1 manual mode
* 2 /usr/bin/python3.6 1 manual mode
3 /usr/local/bin/python3.7 2 manual mode
然后我检查了python3的位置:
which python3
/usr/local/bin/python3
然后我检查了PATH:
echo $PATH
/usr/lib/x86_64-linux-gnu/dbus-1.0/include:/usr/local/lib/boost/include:/<HOME_DIR>/bin:/<HOME_DIR>/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/<HOME_DIR>/.dotnet/tools
原来python3在/usr/bin中搜索之前已经在/usr/local/bin中找到了
为什么update-alternatives没有在 /usr/local/bin 中创建链接以维护正确搜索应用程序?
我不想从 /usr/local/bin中删除python3 ,但在这种情况下update-alternatives变得无用
如何解决 update-alternatives 在 /usr/local/bin 中创建链接的问题?
回答你的第一个问题
这仅仅是因为
alternatives
forpython3
目前被配置为在/usr/bin中创建符号链接。从上面的输出:对于任何 Linux 发行版来说,在/usr/ bin之前搜索/usr/local/bin以查找可执行文件是很正常的,因为这使您可以自由地将任何二进制文件和库放入/usr/local而不会干扰 dpkg 包。
对于您的具体问题,
sudo update-alternatives --config python3
我猜/usr/local/bin/python3的输出是指向/usr/local/bin/python3.7的符号链接如果是这种情况,只需删除符号链接/usr/local/bin/python3就可以了,因为在调用时
python3
只找到/usr/bin/python3,它应该指向/etc/alternatives/python3其中turn 应指向选定的二进制文件。如果/usr/local/bin/python3不是符号链接,请将其重命名并进行
update-alternatives
适当配置。虽然这可能暂时节省您的时间,但下一次更新可能会使您的配置再次无用。符号链接/usr/bin/python3随软件包一起提供,
python3-minimal
并且通过使用符号链接管理此链接,update-alternatives
从软件包的视图中被破坏python3-minimal
。此软件包的下一次更新可以解决此问题,但从update-alternatives
.要解决这两个问题,最好配置
update-alternatives
为使用/usr/local/bin/python3作为提供所选版本的符号链接。为此,以下步骤应该可以解决问题,包括修复/usr/bin/python3链接。