python - 一个python虚拟环境和具体的系统库有什么关系?

标签 python linux virtualenv

我们有一个应用程序,它在使用 virtualenv 的 python 虚拟环境设置中使用 Python 完成一些工作。

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

由于系统更新,libnetcdf.so.7 不再存在,已被 libnetcdf.so.11 取代。

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

最佳答案

当您使用 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

然而,这些都没有解决没有安装所需支持库的棘手问题。您可以尝试从旧库的位置创建一个指向新库的符号链接(symbolic link) - 可能 NetCDF4 可以与多个版本的 libnetCDF 一起使用,并且配置不当一个特定的版本。否则,解决这个问题可能会变得漫长而痛苦。

关于python - 一个python虚拟环境和具体的系统库有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576125/

相关文章:

python - ZipFile.testzip() 在 Python 2 和 Python 3 上返回不同的结果

xml - 使用 "less than"字符的 exec 上的 Phing 语法错误

python-3.x - MacOS 上的 pip3 : SSL error while installing virtualenv

python - 使用 numpy 和 pandas 加速 virtualenv 创建

python - pip 在事件的 virtualenv 中列出全局包

python - Flask 中尝试通过 app.open_resource() 读取文件时出现 500 HTTP 异常

python - 在 Python 的主线程中捕获线程的异常

linux - Wind River Linux,失败的依赖错误

linux - 如何使用 Crontab 详细创建新文件?

python - 使用 ctypes 在 Python 中访问 c​​_char_p_Array_256