Ubuntu18.04升级Python3.8后报错ModuleNotFoundError: No module named ‘apt_pkg‘
在将Ubuntu自带的Python升级为3.8之后,我发现在进行sudo apt update等操作时会报出ModuleNotFoundError: No module named ‘apt_pkg‘的错误。然后在网上试了很多方法,比如下面的方法:
cd /usr/lib/python3/dist-packages/
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.cpython-38m-x86_64-linux-gnu.so
sudo ln -s apt_pkg.cpython-38m-x86_64-linux-gnu.so apt_pkg.so
但是却发现并不凑效(鉴于我的情况较为特殊,所以还是建议你们先试试上面的方法,不行再用我的方法)。然后我查看了Python3.8的包路径,方法如下:
1.首先进入Python,在命令行中输入Python3(我的Python3默认指定为3.8)
python3
2.导入sys模块
import sys
3.获取路径
sys.path
结果如下:
可以看到,我的Python3.8的包路径是’/usr/local/python3/lib/python3.8/site-packages’,而网上的方法是直接在‘/usr/lib/python3/dist-packages/’这个路径下添加apt_pkg.cpython-38m-x86_64-linux-gnu.so动态链接库,所以无法解决我的问题。
解决方法:
既然找到了问题所在,那么想要解决就好办了。
1.复制动态链接库到Python3.8的包路径下
cd /usr/lib/python3/dist-packages/
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so /usr/local/python3/lib/python3.8/site-packages/apt_pkg.cpython-38m-x86_64-linux-gnu.so
2.建立软链接(注意,先进入到你的Python包路径下再建立软连接)
cd /usr/local/python3/lib/python3.8/site-packages
sudo ln -s apt_pkg.cpython-38m-x86_64-linux-gnu.so apt_pkg.so
最后成功update
总结
要注意升级后Python的包的路径,由于升级后我的Python3.8的包路径改变,即使在”/usr/lib/python3/dist-packages/“路径下将“apt_pkg.cpython-36m-x86_64-linux-gnu.so”复制为“apt_pkg.cpython-38m-x86_64-linux-gnu.so”并建立软连接也无法访问到,所以需要将动态链接库复制到Python3.8的包路径下才能被访问。