我们有一个应用程序,它使用virtualenv在python虚拟环境设置中用Python完成一些工作。
我们遇到的问题是系统库的版本与虚拟环境中安装的版本不匹配。我们已将NetCDF4
安装到虚拟环境中,之前已通过libnetcdf.so.7
安装了yum
。 python包看起来依赖于libnetcdf.so.7
可用。
由于系统更新libnetcdf.so.7
已不再存在且已被libnetcdf.so.11
替换。
所以问题是:设置虚拟环境是否检测系统库版本或是否有其他机制?我们还需要重新构建环境来解决这个问题,还是有其他选择?
答案 0 :(得分:0)
使用virtualenv
创建虚拟环境时,您可以选择是否将标准站点包作为环境的一部分包含在内。由于这是现在的默认行为(尽管可以通过在命令行中使用--no-site-packages
来声明),但您可能正在使用不支持此版本的旧版virtualenv。
在这种情况下,您应该能够相当轻松地重新创建环境。首先使用commmand
捕获现有环境中当前安装的软件包pip freeze > /tmp/requirements.txt
然后删除虚拟环境,并使用以下命令重新创建它:
virtualenv --no-site-packages envname
source envname/bin/activate
pip install -r /tmp/requirements.txt
然而,这些都没有解决没有安装所需支持库的棘手问题。您可以尝试从旧库的位置创建指向新库的符号链接 - 可能NetCDF4
可以使用多个版本的libnetCDF
,并且只是配置错误以使用特定版本。如果没有那么解决这个问题可能会变得漫长而痛苦。