2016-09-19 29 views
0

我们有一个应用程序,它使用virtualenv在python虚拟环境设置中执行一些Python工作。python虚拟环境和特定系统库之间的关系是什么?

我们遇到了系统库的版本与虚拟环境中安装的版本不匹配的问题。这就是我们已经将NetCDF4安装到虚拟环境中,并且以前通过yum安装了libnetcdf.so.7。 python包似乎取决于有libnetcdf.so.7可用。

由于系统更新libnetcdf.so.7不再存在并已被libnetcdf.so.11替换。

所以问题是这样的:设置虚拟环境检测系统库版本还是有其他一些机制?我们是否也需要重新构建环境来解决这个问题,或者还有其他选择吗?

回答

0

当您使用virtualenv创建虚拟环境时,您可以选择是否将标准网站包作为环境的一部分。由于这是现在的默认行为(虽然可以通过在命令行中使用--no-site-packages来声明),但您可能正在使用不坚持这一点的旧版本的virtualenv。

在这种情况下,您应该能够相当容易地重新创建环境。首先,捕捉到现有环境当前已安装的软件包与条命令

pip freeze > /tmp/requirements.txt 

然后删除虚拟环境,并用下面的命令重新创建:

virtualenv --no-site-packages envname 
source envname/bin/activate 
pip install -r /tmp/requirements.txt 

但是没有这解决了没有安装所需支持库的棘手问题。您可以尝试从旧图书馆的位置创建一个到新图书馆的符号链接 - 可能NetCDF4可以与多个版本的libnetCDF一起使用,并且只是被严格配置为使用特定版本。如果不是,那么解决这个问题可能会变得漫长而痛苦。

相关问题