python - 可以找到重新定位的库的 virtualenv(比如 MySQLdb 的 mysqlclient 库)

标签 python mysql shared-libraries virtualenv mysql-python

我希望能够共享一个自包含的 virtualenv,即确保安装的所有脚本都能够直接运行而无需进行任何设置。 例如。我在使用 MySQL-python 的 virtualenv 中安装了一个脚本。不幸的是,导入 MySQLdb 会寻找一个共享库 (libmysqlclient.so),该库已移动到我系统上标准目录以外的其他地方。 有没有办法保证每次有人使用我的 virtualenv 时都能找到该库?

最佳答案

我知道这个问题有点老了,但我很乐意分享我的解决方案,因为无法通过 Google 找到它:

deactivate()函数中,添加如下几行:

    if ! [ -z ${_OLD_LD_LIBRARY_PATH+x} ] ; then
        LD_LIBRARY_PATH="$_OLD_LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH
        unset _OLD_LD_LIBRARY_PATH
    fi

请注意,我使用的是否定的 -z 表达式 - PATHPYTHONHOME 的现有重置脚本使用 -n ,如果 _OLD_LD_LIBRARY_PATH 设置为空字符串,它会错误地计算为 false。

然后,在 deactivate () 函数下面,添加以下部分:

_OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
LD_LIBRARY_PATH="$VIRTUAL_ENV/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH

关于python - 可以找到重新定位的库的 virtualenv(比如 MySQLdb 的 mysqlclient 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22771204/

相关文章:

Python递归函数错误: "maximum recursion depth exceeded"

python - 动态选择从哪个子类继承方法?

python - 关于魔术 8 球程序的问题,其中包含一个来自使用 Python 自动化无聊的东西的列表

php - Codeigniter:Ion auth 重置密码

mysql - 从 MySQL 迁移到具有 unicode 缺陷的 Postgres

c++ - 在多个共享库中静态库成员的多重初始化

python - Pyspark Dataframe - 如何根据列数组作为输入连接列

mysql - 查询查找具有相同列名的两个表的匹配记录

jenkins - 使用管道共享库访问 Jenkins 实例

c++ - 我们如何让一个共享指针指向另一个共享指针的对象呢?