Python3.6 如何安装libtorrent?

Python3.6 how to install libtorrent?

libtorrent 现在支持 python3 吗?如果支持怎么安装。

我想用 python3 编写一个 DHT 爬虫,我不知道为什么我的代码总是通过对等错误重置连接,所以我想使用 libtorrent,如果有另一个库,我我很高兴使用它。我最大的问题是,将 infohash 转换为 torrent 文件。会不会是代码问题?

class Crawler(Maga):
async def handler(self, infohash, addr):
    fetchMetadata(infohash, addr)


def fetchMetadata(infohash, addr, timeout=5):
tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpServer.settimeout(timeout)
if tcpServer.connect_ex(addr) == 0:
    try:
        # handshake
        send_handshake(tcpServer, infohash)
        packet = tcpServer.recv(4096)
        # handshake error
        if not check_handshake(packet, infohash):
            return
        # ext handshake
        send_ext_handshake(tcpServer)
        packet = tcpServer.recv(4096)

        # get ut_metadata and metadata_size
        ut_metadata, metadata_size = get_ut_metadata(packet), get_metadata_size(packet)

        # request each piece of metadata
        metadata = []
        for piece in range(int(math.ceil(metadata_size / (16.0 * 1024)))):
            request_metadata(tcpServer, ut_metadata, piece)
            packet = recvall(tcpServer, timeout)  # the_socket.recv(1024*17) #
            metadata.append(packet[packet.index("ee") + 2:])

        metadata = "".join(metadata)

        logging.info(bencoder.bdecode(metadata))
    except ConnectionResetError as e:
        logging.error(e)
    except Exception as e:
        logging.error(e)
    finally:
        tcpServer.close()

是的,libtorrent(应该)支持 python 3.

构建和安装 python 绑定的基本方法是 运行 绑定 setup.py。这需要在 distutils 期望的地方正确安装所有依赖项。如果可行,那可能是最简单的方法,因此值得一试。我相信您必须使用 python3 调用此 python 脚本,如果这是您正在构建的目的。

要使用主构建系统构建(并手动安装生成的模块),您可以按照 windows 的 .travis file (for unix) or the appeyor 文件中的步骤进行操作。 在你的情况下,你想指定 python 的 3.x 版本,但它的本质是:

brew install boost-python
echo "using python : 2.7 ;" >> ~/user-config.jam
cd bindings/python
bjam -j3 stage_module libtorrent-link=static boost-link=static

测试:

python test.py

请注意,在实际的构建步骤中,如果您已经安装了 boost,您可能希望 link 共享它,如果您已经安装或将要安装它,则可能需要与 libtorrent 共享。

在 windows:

将以下内容添加到 $HOMEPATH\user-config.jam

using msvc : 14.0 ;
using gcc : : : <cxxflags>-std=c++11 ;
using python : 3.5 : c:\Python35-x64 : c:\Python35-x64\include : c:\Python35-x64\libs ;

然后运行:

b2.exe --hash openssl-version=pre1.1 link=shared libtorrent-link=shared stage_module stage_dependencies

测试:

c:\Python35-x64\python.exe test.py