Python3.6如何安装libtorrent?

时间:2017-09-24 08:25:38

标签: python-3.x bittorrent dht libtorrent

libtorrent现在支持python3吗?如果支持如何安装它。

我想用python3编写一个DHT Crawler,我不知道为什么我的代码alaways得到了Connection错误的对象重置,所以我想使用libtorrent,如果有另一个lib,我很乐意使用它。我最大的问题是,将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()

1 个答案:

答案 0 :(得分:1)

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

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

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

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链接到boost,如果已安装,则可以与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