我遇到一个问题,当我搜索正确版本的Python我每次都发现蟒蛇3.7:
python3 --version
Python 3.7.0
然后我检查了更新替代方案配置:
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
然后我检查了小路:
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 中找到
为什么更新替代方案是否没有在 /usr/local/bin 中创建链接以维护应用程序的正确搜索?
我不想删除python3来自 /usr/local/bin,但在这种情况下更新替代方案变得毫无用处
如何修复 update-alternatives 也在 /usr/local/bin 中创建链接的问题?
答案1
回答你的第一个问题
为什么 update-alternatives 没有在 /usr/local/bin 中创建链接以维护应用程序的正确搜索?
这只是因为目前配置alternatives
为python3
在中创建符号链接/usr/bin. 从上面的输出来看:
sudo update-alternatives --config python3
There are 3 choices for the alternative python3 (providing /usr/bin/python3).
...
对于任何 Linux 发行版来说,搜索在/usr/本地/bin前/usr/bin对于可执行文件,因为这使你可以自由地将任何二进制文件和库放入/usr/本地而不会干扰 dpkg 包。
sudo update-alternatives --config python3
对于你的具体问题,从我猜的输出来看在/usr/local/bin/python3是指向/usr/local/bin/python3.7
root@host:~# ls -l /usr/local/bin/python3
lrwxrwxrwx 1 root root 25 Sep 22 15:36 /usr/local/bin/python3 -> /usr/local/bin/python3.7
如果是这种情况,只需删除符号链接在/usr/local/bin/python3你应该没事,因为当调用python3
时/usr/bin/python3找到,它应该指向/etc/alternatives/python3反过来应该指向所选的二进制文件。
如果在/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关联。
sudo update-alternatives --install /usr/local/bin/python3 python3 /usr/bin/python3.6 2
apt-get install --reinstall python3-minimal