私は最後の数日でPython3で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
できません。
私は実行することにより、そのようにthe GitHub pageからパッケージをダウンロードしてインストールすることができます。
$ python setup.py build
$ python setup.py install
作成する:
/home/<user>/anaconda3/lib/python3.6/site-packages/python_libtorrent-1.1.5-py3.6.egg-info
しかし、まだ変化なし。私のPython3のインストールがデフォルトの場所にないことと関係しているかもしれませんが、私はlibtorrentをインストールするという点でそれをどのように扱うべきか分かりません。
私はまた、thisと同様の結果が得られたので、受け入れられた回答は確定的なNOです。しかし、それ以来、それを達成する方法についての指示がない限り、それが可能になっているという最近のコメントがあります。
私は徹底的にアイデアを使い果たしています。どんなにばかげても、どんな提案もありません。今、GitHubページからパッケージを探して、プロジェクトディレクトリにコードをコピーしてローカルモジュールとしてインポートすることができるかどうかを確認していますが、これまではあまり運がありません。それがうまくいかない場合は、オリジナルのC++ libtorrentライブラリのPython3ラッパーを作成します。しかし、私はどこか他の誰かがこれで試して失敗したので、私は成功を期待していないと読んでいます。
EDIT:
さて、私は少しさらに得ています。私はどうにかして、設定ファイルやmakefileを持たないレポのバージョンをダウンロードすることができました。今、私は右のいずれかを持っていることを、私が実行します。
$ ./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
は、私はこれをGoogleで検索し、明らかにPyClass_Typeはのpython3で定義されていません。だから、それはまだPython2のためにそれ自身を構築しようとしているようですが、それはlibboost_python-py27.so
をImportErrorに説明しています。推奨される解決策は、-lboost_python
の代わりに-lboost_python3
でC++ライブラリをコンパイルすることでした。 (それが再びlboost-のpythonを使用するためにMakefileを戻しますので、私は$ ./configure --enable-python-binding
再実行することはできません)
$ make
$ python setup.py build
$ python setup.py
:メイクファイルの行268はので、私はBOOST_PYTHON_LIB = -lboost_python3
と再-RANにそれを変更しBOOST_PYTHON_LIB = -lboost_python
です。残念ながら、私はまだ同じエラーメッセージ:undefined symbol: PyClass_Type
を取得します。私はC++については何も知らないので、ライブラリをコンパイルすることについて本当に明白なものがないかどうかはわかりません。
libboost_python-py27.so.1.62.0の "27"はPythonバージョン2.7を指します。 Python 3.xのためにboost-pythonを構築する必要があります。 – Arvid
@Arvidという回答に感謝します。私はhttp://www.boost.org/からboostをダウンロードし、ここの手順に従って作成しました:https://eb2.co/blog/2012/03/building-boost.python-for-python-3.2/ 'project-config.jam'は私のpythonのパスを' 'python:3.6:/ home//anaconda3;を使用しているので、私はそれを変更する必要はないと思います。私はその後、libtorrentを構築するコマンドを再実行しました。残念ながら、私はまだ同じエラーが発生します。 –
Sam
btw、あなたはlibtorrentデベロッパーですか?私はトラブルシューティングをしていたので、libtorrentについての多くの質問にあなたの記事を見ました。トレント関連のもののような完全なライブラリを構築してくれてありがとう。彼らはそれを構築した後に人々を助け続ける開発者を持つことは素晴らしいことです。私はそれを働かせることができれば言うまでもありませんが、あなたは私を助けてくれました。しかし、もっとクレイジーなバージョンを一緒にハックするのに何週間もかかります。 – Sam