我開始使用Fabric作爲Python項目的簡單部署工具,但有一項任務需要知道在哪裏系統Python庫路徑,以正確設置一些軟件包符號鏈接。Virtualenv下的結構:如何獲取系統的Python庫路徑(不是virtualenv Python的庫路徑)
所以問題是:在我的fabfile中,如何獲得系統Python路徑?例如,這個Python代碼返回正確的庫路徑:
# Without virtualenv activated
>>> from distutils.sysconfig import get_python_lib;
>>> print get_python_lib()
'/usr/lib/python2.7/dist-packages'
# With virtualenv activated
>>> from distutils.sysconfig import get_python_lib;
>>> print get_python_lib()
'/home/mandx/dev/my_project/env/lib/python2.7/site-packages'
以我爲例,我需要知道兩者運行在面料任務時(並用的virtualenv激活)。
我將解釋我的需求:我想通過簡單地將HTML和CSS內容傳遞給構造函數並調用渲染方法來使用WeasyPrint來生成PDF。這種靈活性非常好,因爲現在可以將PDF佈局利用CSS知識用於設計人員,並且WeasyPrint可以兼容CSS3。
而且取決於某些庫不能與Pip一起安裝(特別是Pango,GdkPixbuf和Cairo)。所以我現在的解決方案是將系統安裝到系統中,並將它們符號鏈接到項目的virtualenv。
我不太喜歡使用virtualenv的--system-site-packages
選項的想法,但我想聽聽爲什麼它會比我的符號鏈接想法更好。