您如何使用酿造的 Python 安装 libtorrent-rasterbar Python 绑定?

Jer*_*oen 5 python homebrew macos

标准方法不起作用:

brew install libtorrent-rasterbar
Run Code Online (Sandbox Code Playgroud)

将安装 boost 要求(与系统 Python 相关联),并且 libtorrent-rasterbar 将在没有任何 Python 绑定的情况下安装。

你如何解决这个问题?

Jer*_*oen 5

经过大量的挖掘、谷歌搜索和反复试验,我已经能够让这一切正常工作。我在这里分享我的经验,希望能帮其他人省去麻烦。

第一步是确保正确安装了 Python。检查是否which python返回正确的 Python 版本(可能类似于/usr/local/bin/python

正确链接提升

使用以下命令检查您的 boost 是否与正确版本的 Python 相关联(必要时将 /usr/local 更改为您的 Homebrew 前缀)。

otool -L /usr/local/lib/libboost_python-mt.dylib
Run Code Online (Sandbox Code Playgroud)

结果应包含以下行:

/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
Run Code Online (Sandbox Code Playgroud)

如果它指向某个地方/System/Library/Frameworks,你需要重建Boost库,并从源(强制执行构建REF):

brew rm boost ; brew install boost --build-from-source
Run Code Online (Sandbox Code Playgroud)

完成后,您可以运行上面的行来验证它是否正确链接。

带有 Python 绑定的 Libtorrent-rasterbar

现在 boost 已正确安装,libtorrent-rasterbar 可以使用它们来构建 Python 绑定。我们必须编辑公式以启用它们,而且还要指导构建过程在哪里找到它们。

执行brew edit libtorrent-rasterbar,然后将其更改为与此匹配:

def install
system "./configure", "--disable-debug",
                      "--disable-dependency-tracking",
                      "--enable-python-binding",
                      "--with-boost-python=mt",
                      "--prefix=#{prefix}"
Run Code Online (Sandbox Code Playgroud)

这里重要的两行是启用 python 绑定,--enable-python-binding第二行是--with-boost-python=mt显示它已经安装了“mt”后缀(ref)。

这将允许构建过程识别在第一步中安装的 boost 库。所以关闭编辑器,并brew install libtorrent-rasterbar照常进行。

最后检查

最后,为了确保一切正常:

% python
Python 2.7.3 (default, Feb 10 2013, 10:53:34) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.24)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import libtorrent
>>> 
Run Code Online (Sandbox Code Playgroud)