2013-02-27 42 views
1

我開始使用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選項的想法,但我想聽聽爲什麼它會比我的符號鏈接想法更好。

回答

1

只要運行的織物shell腳本命令任務要求操作系統的蟒蛇:

/usr/bin/python -c 'from distutils.sysconfig import get_python_lib;print get_python_lib()' 
相關問題