Fedora升级后虚拟环境缺失libpython3.5m.so.1.0的解决咨询
解决Fedora 27升级后Python 3.5虚拟环境依赖缺失问题
这个报错的核心原因很明确:你升级到Fedora 27后,系统默认的Python 3.5被移除(Fedora 27自带的是Python 3.6),而你之前创建的虚拟环境是绑定系统级Python 3.5的,所以找不到它依赖的libpython3.5m.so.1.0共享库了。下面给你两个可行的解决方案,按需选择:
方案一:修复现有虚拟环境(重新安装Python 3.5)
如果你的项目必须依赖Python 3.5,不想重新配置依赖,可以按以下步骤操作:
- 先安装编译Python所需的依赖包:
sudo dnf install gcc openssl-devel bzip2-devel libffi-devel zlib-devel - 下载Python 3.5的最新稳定源码包(3.5.10是3.5分支的最后一个版本):
wget https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tgz - 解压并进入源码目录:
tar xzf Python-3.5.10.tgz cd Python-3.5.10 - 编译安装(用
altinstall避免替换系统默认的Python版本):./configure --enable-optimizations make altinstall - 修复虚拟环境的Python链接:进入你的虚拟环境的
bin目录,替换掉失效的符号链接:cd /path/to/your/venv/bin rm python python3 python3.5 ln -s /usr/local/bin/python3.5 python ln -s /usr/local/bin/python3.5 python3 ln -s /usr/local/bin/python3.5 python3.5 - 现在激活虚拟环境,测试Python版本:
如果显示Python 3.5.x,再尝试启动Django应用即可。source /path/to/your/venv/bin/activate python --version
方案二:创建新的虚拟环境(更推荐)
系统升级后,旧虚拟环境可能还存在其他潜在依赖问题,重新创建是更稳妥的选择:
- 先备份旧环境的依赖列表:如果还能勉强激活旧环境(即使报错,试试执行),导出依赖:
如果激活失败,就手动整理项目需要的依赖包版本到source /path/to/your/venv/bin/activate pip freeze > requirements.txt deactivaterequirements.txt文件中。 - 删除旧的虚拟环境:
rm -rf /path/to/your/venv - 用Fedora 27自带的Python版本创建新虚拟环境:
python3 -m venv new_venv - 激活新环境并安装依赖:
source new_venv/bin/activate pip install -r requirements.txt - 测试启动Django:
注意:如果你的Django版本太旧不兼容Python 3.6,执行python manage.py runserverpip install --upgrade django升级到兼容版本即可(Django 1.11及以上版本都支持Python 3.6)。
额外建议
以后再升级系统前,建议用pip freeze导出依赖列表;或者用pyenv这类工具管理本地多个Python版本,这样系统升级不会影响你项目使用的Python版本,能避免类似问题。
内容的提问来源于stack exchange,提问作者Lukasz
相关产品推荐
相关产品推荐

