我希望能够共享一个自包含的 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
表达式 - PATH
和 PYTHONHOME
的现有重置脚本使用 -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/