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
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