Python-Fabric下的Python-path-not-the-virtual-library:

2024-03-29 08:33:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始使用Fabric作为Python项目的简单部署工具,但是有一个任务需要知道系统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'

在我的例子中,当在Fabric中运行任务时(并且在virtualenv处于活动状态时),我需要同时了解这两个方面。在

我将解释我的需要:我想使用WeasyPrint来生成PDF,只需将HTML和CSS内容传递给构造函数并调用一个呈现方法。这种灵活性很好,因为a现在可以利用PDF布局给具有CSS知识的设计师,而WeasyPrint则致力于CSS3的兼容性。在

取舍是它依赖于一些不能用Pip安装的库(特别是Pango、GdkPixbuf和Cairo)。因此,我现在的解决方案是在系统范围内安装这些软件,并将它们符号链接到项目的virtualenv。在

我不太喜欢使用virtualenv的--system-site-packages选项,但我想听听为什么它会比我的符号链接更好。在


Tags: 项目fromimport路径getvirtualenv链接lib