我希望能夠共享一個自包含的virtualenv,即確保安裝的所有腳本都能夠直接運行而無需設置任何內容。 例如我在使用MySQL-python的virtualenv中安裝了一個腳本。不幸的是,導入MySQLdb會查找一個共享庫(libmysqlclient.so),該庫被移動到我的系統上的標準目錄以外的地方。 有沒有辦法保證我的virtualenv每次有人使用它時都會找到這個庫?virtualenv可以找到重新定位的庫(如MySQLdb的mysqlclient庫)
5
A
回答
3
這可能不是最好的解決方案,但是你可以破解virtualenv活動腳本來設置一些環境變量(這是一個我們需要使用的腳本)。 在virtualenv中的安裝腳本,我說:
echo 'export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH' >> /path/to/virtualenv/activate
現在每次有人使用我的virtualenv,還包括LD_LIBRARY_PATH找到mysql庫。
缺點,我可以看到:
不要的virtualenv的工作很好的解除
,如果你想你的包與標準的distutils setup.py分佈也無濟於事。
5
我知道這個問題是有點老了,但我很樂意分享我的不足通過谷歌找到它的解決方案:
在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
設置爲EMP它錯誤地計算結果爲假現有的復位腳本ty字符串。
然後,下面的deactivate()
功能,添加以下部分:
_OLD_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
LD_LIBRARY_PATH="$VIRTUAL_ENV/lib:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
相關問題
- 1. CMake無法找到mysqlclient庫
- 2. python2.5中的MySQLdb virtualenv
- 3. virtualenv的哪些部分需要更改以重新定位它?
- 4. 當我給定位置時,哪裏可以找到hive數據庫的位置?
- 5. 試圖將WC重新定位到新存儲庫的問題
- 6. mysqlclient庫連接問題
- 7. 如何找到Qt庫的位置
- 8. 哪裏可以找到官方Android庫的最新版本?
- 9. Python的重新連接到MySQLdb的
- 10. 重新編譯32位庫
- 11. 是否可以重新定位pythonbrew
- 12. .goutputstream-XXXXX - 可以重新定位?
- 13. 我可以重新定位`.stack-work`嗎?
- 14. 在virtualenv中將MySQLdb添加到sys.path
- 15. 的Django的virtualenv VS庫包
- 16. 我在哪裏可以找到Microsoft.IdentityModel.Extensions.dll庫?
- 17. 我在哪裏可以找到nhs.itk.hl7v3庫
- 18. 哪裏可以找到Sqlite數據庫?
- 19. 哪裏可以找到開源Java庫?
- 20. 我在哪裏可以找到LinkGrammar庫?
- 21. 找到重定位的起始位置
- 22. virtualenv pip mysqldb mac os X python
- 23. PythonAnywhere +的virtualenv: 「無法找到平臺依賴庫<exec_prefix> ......」
- 24. 找到重複的數據庫的最大數字位數
- 25. 將工作副本重新定位到不在Netbeans中的新SVN存儲庫
- 26. 如何將重定位pom.xml部署到sonatype的OSS存儲庫
- 27. virtualenv和django的其他庫
- 28. Ruby庫可以在佈局好的網頁上找到項目的「位置」?
- 29. 找到URL重定向到的位置
- 30. 重新連接到新的SVN倉庫