由于 python 版本不匹配(3.8.5 与 3.8.6)导致包含 python 模块时出现问题
Problem with including python modules due to python version mismatch (3.8.5 vs 3.8.6)
问题背景:
- 我使用了 ubuntu 16.04,我必须从源代码安装 python 3.8。我下载了 python 3.8.6 并进行了 altinstall'ed。它工作正常,但是当 linking/update-alternatives python3 到 python 3.8 时我有可能搞砸了一些东西,现在 ubuntu 升级后会导致问题。
- 我已经从 python 3.8.5
附带的 16.04 升级到 ubuntu 20.04
问题
我在升级到 20.04 后遇到了 python 版本不匹配(3.8.5 与 3.8.6)的一些问题,所以我删除了(我可以恢复它)手动安装的 python 3.8 .6 来自 /usr/local/bin。它部分地解决了问题。现在
$ which python3
/usr/bin/python3
$ /usr/bin/python3 --version
Python 3.8.5
$ which python3.8
/usr/bin/python3.8
$ /usr/bin/python3.8 --version
Python 3.8.5
尽管如此,当 运行 vim 使用使用 python 3.8 的插件时,我看到加载 python 模块时出现问题,例如:
Traceback (most recent call last):
File "/usr/lib/python3.8/subprocess.py", line 64, in <module>
import msvcrt
或不那么冗长:
YouCompleteMe unavailable: No module named '_socket'
vim还有什么:
:py3 print( __import__( 'sys' ).version )
结果:
3.8.6 (default, Nov 2 2020, 13:09:31)
[GCC 5.4.0 20160609]
这表明 python3.8.6 和 python3.8.5
有问题
我绑定的是:
- sudo apt reinstall python3 python3-dev python3.8 python3.8-dev
- sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2
- 通过将 python 3.8.6 留在 /usr/local/bin/ 中并暂时删除 /usr/bin/python3* 可以解决 W/A 问题,但这不是好的长期解决方案。
感谢任何提示。可能摆脱手动安装的 python 3.8.6 会完成这项工作,但不确定是否可行。此外,通过 apt remove 删除 python3(再次从头开始安装)可能是不可能的,因为我只能远程 ssh 访问该机器并预计会出现一些问题。
预期的问题与 python 3.8.6(从源安装)和 python 3.8.5(默认情况下与 ubuntu20.04 一起提供)有关。
# ldd /usr/bin/vim | grep python
libpython3.8.so.1.0 => /usr/local/lib/libpython3.8.so.1.0 (0x00007f1ef9212000)
这是在手动构建期间安装的库并指向 python 3.8.6,而所有 vim 插件都是使用默认 python 3.8.5 构建的。之后
sudo mv /usr/local/lib/libpython3.8.so.1.0 /usr/local/lib/temp-libpython3.8.so.1.0
使用的库指向:
ldd /usr/bin/vim | grep python
libpython3.8.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 (0x00007fa50896e000)
这解决了问题。此外,现在在 vim 中,我可以看到使用的是 python 3.8.5 而不是 3.8.6:
:py3 print( __import__( 'sys' ).version )
3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0]
问题背景:
- 我使用了 ubuntu 16.04,我必须从源代码安装 python 3.8。我下载了 python 3.8.6 并进行了 altinstall'ed。它工作正常,但是当 linking/update-alternatives python3 到 python 3.8 时我有可能搞砸了一些东西,现在 ubuntu 升级后会导致问题。
- 我已经从 python 3.8.5 附带的 16.04 升级到 ubuntu 20.04
问题
我在升级到 20.04 后遇到了 python 版本不匹配(3.8.5 与 3.8.6)的一些问题,所以我删除了(我可以恢复它)手动安装的 python 3.8 .6 来自 /usr/local/bin。它部分地解决了问题。现在
$ which python3
/usr/bin/python3
$ /usr/bin/python3 --version
Python 3.8.5
$ which python3.8
/usr/bin/python3.8
$ /usr/bin/python3.8 --version
Python 3.8.5
尽管如此,当 运行 vim 使用使用 python 3.8 的插件时,我看到加载 python 模块时出现问题,例如:
Traceback (most recent call last):
File "/usr/lib/python3.8/subprocess.py", line 64, in <module>
import msvcrt
或不那么冗长:
YouCompleteMe unavailable: No module named '_socket'
vim还有什么:
:py3 print( __import__( 'sys' ).version )
结果:
3.8.6 (default, Nov 2 2020, 13:09:31)
[GCC 5.4.0 20160609]
这表明 python3.8.6 和 python3.8.5
有问题我绑定的是:
- sudo apt reinstall python3 python3-dev python3.8 python3.8-dev
- sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2
- 通过将 python 3.8.6 留在 /usr/local/bin/ 中并暂时删除 /usr/bin/python3* 可以解决 W/A 问题,但这不是好的长期解决方案。
感谢任何提示。可能摆脱手动安装的 python 3.8.6 会完成这项工作,但不确定是否可行。此外,通过 apt remove 删除 python3(再次从头开始安装)可能是不可能的,因为我只能远程 ssh 访问该机器并预计会出现一些问题。
预期的问题与 python 3.8.6(从源安装)和 python 3.8.5(默认情况下与 ubuntu20.04 一起提供)有关。
# ldd /usr/bin/vim | grep python
libpython3.8.so.1.0 => /usr/local/lib/libpython3.8.so.1.0 (0x00007f1ef9212000)
这是在手动构建期间安装的库并指向 python 3.8.6,而所有 vim 插件都是使用默认 python 3.8.5 构建的。之后
sudo mv /usr/local/lib/libpython3.8.so.1.0 /usr/local/lib/temp-libpython3.8.so.1.0
使用的库指向:
ldd /usr/bin/vim | grep python
libpython3.8.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 (0x00007fa50896e000)
这解决了问题。此外,现在在 vim 中,我可以看到使用的是 python 3.8.5 而不是 3.8.6:
:py3 print( __import__( 'sys' ).version )
3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0]