构建集成

要使用Pycairo编译一个Python扩展,您需要知道Pycairo和cairo的位置,以及要传递给编译器和链接器的标志。

  1. 变体:

    与变体2类似,但不需要加载pycairo,这在Windows上可能会有问题,因为从Python3.8开始,默认情况下cairo不在DLL搜索路径中。

    def get_include_path():
        import os
        from importlib.util import find_spec
        spec = find_spec("cairo")
        assert spec is not None
        return os.path.join(os.path.dirname(spec.origin), 'include')
    
    编译器标志:
    • python -c "get_include_path()"

    • pkg-config --cflags cairo

    链接器标志:
    • pkg-config --libs cairo

  2. 变体:

    仅在1.16.0版之后才可用。

    虽然Pycairo安装了pkg-config文件,但如果是Virtualenvs,则安装到用户目录,或者使用轮子/鸡蛋时,pkg-config将无法找到.pc文件。这个 get_include() 只要Pycairo在您的Python搜索路径中,函数就应该在所有情况下都有效。

    编译器标志:
    • python -c "import cairo; print(cairo.get_include())"

    • pkg-config --cflags cairo

    链接器标志:
    • pkg-config --libs cairo

  3. 变体:

    这适用于旧版本,但具有上面提到的限制。如果您想要支持旧版本,或者如果您的模块不需要Virtualenv/Pip支持,可以使用它作为备用。

    编译器标志:
    • pkg-config --cflags py3cairo

    链接器标志:
    • pkg-config --libs py3cairo