저는 지난 며칠 동안 파이썬 3에서 libtorrent를 설치하기 위해 모든 것을 시도했습니다. 내가 노력할 상관없이, 내가 얻을 : 나는 실행할 때libtorrent는 Python 3에서 작동합니까?
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import libtorrent
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'libtorrent'
내가 오류를 얻을 :
$ sudo apt-get install python3-libtorrent
$ sudo apt-get install libtorrent-rasterbar-dev
은 정말 libtorrent의 차이, 그리고 libtorrent - rasterbar을 이해하지 않습니다. 내가 알 수있는 한, 래스터 바는 libtorrent에 대한 의존성이다.
PyPi page에는 바이너리가 없으므로 pip install
수 없습니다. 여전히 변화를
/home/<user>/anaconda3/lib/python3.6/site-packages/python_libtorrent-1.1.5-py3.6.egg-info
을하지만 :
나는 the GitHub page에서 패키지를 다운로드하지 않고 그런 식으로 실행하여 설치할 수 있습니다
$ python setup.py build
$ python setup.py install
생성한다. 파이썬 3을 기본 위치에 설치하지 않고 설치하는 것과 관련이 있을지 모르지만 libtorrent를 설치하는 방법을 어떻게 처리해야할지 모르겠습니다.
나는 또한 this 비슷한 질문을 수락 대답은 최종 아니오입니다. 그러나 그것을 성취하는 방법에 대한 지침이 없다는 것을 제외하고는 그 이후로 가능 해졌다는 최근의 의견이 있습니다.
나는 철저하게 아이디어가 부족하며 어리석은 제안이 있어도 공개됩니다. 지금 당장 GitHub 페이지에서 얻은 패키지를 통해 프로젝트 디렉토리에 코드를 복사 한 다음 로컬 모듈로 가져올 수 있는지 확인하고 있지만 아직까지는별로 운이 좋지 않습니다. 작동하지 않는다면, 원래의 C++ libtorrent 라이브러리 용 Python3 래퍼를 작성해 보겠습니다. 그러나, 나는 누군가 다른 사람이 이것에서 시도하고 실패했기 때문에 어딘가에서 읽었고, 그래서 나는 성공을 기대하지 않는다.
편집 :
그래, 조금 더 알아 보았습니다. 필자는 어떻게 든 구성 파일이나 makefile이없는 repo 버전을 다운로드 할 수있었습니다.
$ ./configure --enable-python-bindings
$ make
$ python setup.py build
$ python setup.py install
$ python
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import libtorrent
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.62.0: undefined symbol: PyClass_Type
내가이 봤, 분명히 PyClass_Type는 Python3에 정의되지 않은 : 지금이 바로 하나를 가지고, 내가 실행합니다. 그래서 그것은 여전히 Python2에 대해 자체적으로 빌드하려고 시도하고있는 것으로 보이며, 이는
libboost_python-py27.so
을 ImportError로 설명합니다. 제안 된 솔루션은
-lboost_python
대신
-lboost_python3
을 사용하여 C++ 라이브러리를 컴파일하는 것이 었습니다. 메이크 파일의 라인 268
BOOST_PYTHON_LIB = -lboost_python
그래서 난
BOOST_PYTHON_LIB = -lboost_python3
로 변경하고 다시 달렸다입니다 :
$ make
$ python setup.py build
$ python setup.py
(I 다시 실행할 수 없습니다 $ ./configure --enable-python-binding
를 다시 lboost - 파이썬을 사용하기 위해 Makefile을 되돌아 때문에). 불행히도, 나는 여전히 동일한 오류 메시지를받습니다 : undefined symbol: PyClass_Type
. C++에 대해서는 아무 것도 모른다. 그래서 라이브러리를 컴파일하는 것에 대해 정말로 분명한 사실을 놓치고 있는지 잘 모르겠다.
libboost_python-py27.so.1.62.0의 "27"은 python 버전 2.7을 나타냅니다. 파이썬 3.x를 위해 boost-python을 빌드해야합니다. – Arvid
@Arvid 응답에 감사드립니다. 나는 http://www.boost.org/에서 부스트를 다운로드하고 여기 지침에 따라 만들었습니다 : https://eb2.co/blog/2012/03/building-boost.python-for-python-3.2/ 'project-config.jam'는 파이썬 경로를'python : 3.6 :/home//anaconda3;을 사용하여 나열 했으므로 변경하지 않아도됩니다. 그런 다음 명령을 다시 실행하여 libtorrent를 빌드했습니다. 불행히도, 나는 여전히 같은 오류가 발생합니다. –
Sam
btw, 당신은 libtorrent dev입니다, 맞습니까? 내가 문제를 해결할 때 libtorrent에 대한 많은 질문에 귀하의 게시물을 보았습니다. Torrent와 관련된 완벽한 라이브러리를 구축해 주셔서 감사합니다. 사람들이 그것을 만든 후에도 계속 돕는 개발자를 갖는 것이 좋습니다. 말할 것도없이 내가 일할 수 있다면, 당신은 나에게 많은 시간을 주었을 것이다. 그러나 훨씬 더 까다로운 버전을 함께 해킹 할 것이다. – Sam