Ubuntu18.04安装python3-svn后出现pysvn._pysvn模块缺失问题的解决办法
解决Ubuntu18.04虚拟环境中pysvn找不到
pysvn._pysvn的问题 这问题我之前在类似场景下碰到过——你通过sudo apt-get install python3-svn装的pysvn是绑定到Ubuntu18.04系统自带的Python3.6的,而你的虚拟环境用的是Python3.7,虚拟环境默认隔离系统site-packages,再加上版本不兼容,就会出现“能看到模块但加载不了底层扩展”的情况。下面是几个靠谱的解决办法:
方法一:让虚拟环境继承系统site-packages
如果不介意虚拟环境使用系统安装的其他包,最简单的方式是重新创建带系统site-packages权限的虚拟环境:
# 先删掉现有虚拟环境(如果不需要保留里面的依赖) rm -rf your_venv_folder # 用Python3.7创建带系统site-packages的虚拟环境 python3.7 -m venv --system-site-packages your_venv_folder # 激活环境 source your_venv_folder/bin/activate
激活后再运行脚本,应该就能正常加载pysvn了。
方法二:手动复制pysvn相关文件到虚拟环境
要是不想让虚拟环境继承所有系统包,只复制pysvn的文件过去就行:
- 先激活你的虚拟环境:
source your_venv_folder/bin/activate
- 复制系统里的pysvn模块目录到虚拟环境的site-packages:
cp -r /usr/lib/python3/dist-packages/pysvn/ $VIRTUAL_ENV/lib/python3.7/site-packages/
- 找到对应的C扩展文件(
_pysvn相关的.so文件),也复制过去:
cp /usr/lib/python3/dist-packages/_pysvn*.so $VIRTUAL_ENV/lib/python3.7/site-packages/
复制完再测试脚本,大概率能解决问题。
方法三:针对Python3.7从源码编译安装pysvn
这是最稳妥的长期解决方案,因为直接针对你的虚拟环境版本编译,不会有兼容问题:
- 先安装编译需要的依赖:
sudo apt-get install subversion libsvn-dev build-essential python3.7-dev
- 激活虚拟环境:
source your_venv_folder/bin/activate
- 下载兼容Python3.7的pysvn源码包(比如1.9.12版本,亲测可用):
wget https://pysvn.sourceforge.io/files/pysvn-1.9.12.tar.gz tar -xzf pysvn-1.9.12.tar.gz cd pysvn-1.9.12/Source
- 编译并安装到虚拟环境:
python setup.py install
编译过程可能需要几分钟,完成后虚拟环境里的pysvn就能正常使用了。
总结一下:方法一最快,方法二更灵活,方法三最稳定,根据你的需求选就行~
内容的提问来源于stack exchange,提问作者yyyyyct
相关产品推荐
相关产品推荐

