2

我在 Mac OS X 10.6 上。Python 是 2.6.1。我已将 bencode 模块安装为

sudo easy_install BitTorrent-bencode

它出现在站点包中

/Library/Python/2.6/site-packages/BitTorrent_bencode-5.0.8-py2.6.egg

但是,如何导入和使用这个模块呢?

>>> import bencode

不工作...

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named bencode

如何从站点包中导入模块?如何识别 BitTorrent_bencode-5.0.8-py2.6.egg 包含的模块名称?

sys.path ['', '/Library/Python/2.6/site-packages/BitTorrent_bencode-5.0.8-py2.6.egg', '/Library/Python/2.6/site-packages', '/System/Library /Frameworks/Python.framework/Versions/2.6/lib/python26.zip', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6', '/System/Library/Frameworks/Python .framework/Versions/2.6/lib/python2.6/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac', '/System/Library /Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages','/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python',' /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk','/System/Library/Frameworks/Python.framework/Versions/2。6/lib/python2.6/lib-old'、'/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload'、'/System/Library/Frameworks/Python.框架/版本/2.6/Extras/lib/python/PyObjC','/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode']

谢谢

4

5 回答 5

2

BitTorrent_bencode-5.0.8-py2.4.egg 坏了。如果你使用 unzip 查看 egg 的内容,你会看到:

$ unzip BitTorrent_bencode-5.0.8-py2.6.egg                                                                                                                                                                                                                         
Archive:  BitTorrent_bencode-5.0.8-py2.6.egg
  inflating: EGG-INFO/dependency_links.txt  
  inflating: EGG-INFO/PKG-INFO       
  inflating: EGG-INFO/SOURCES.txt    
  inflating: EGG-INFO/top_level.txt  
  inflating: EGG-INFO/zip-safe       
  inflating: test/__init__.py        
  inflating: test/__init__.pyc       
  inflating: test/benchmarkbencode.py  
  inflating: test/benchmarkbencode.pyc  
  inflating: test/benchmarkdata.py   
  inflating: test/benchmarkdata.pyc  
  inflating: test/testbencode.py     
  inflating: test/testbencode.pyc    

请注意,不包括 bencode.py 和 BTL.py。如果您从pypi下载包的源代码分发,您可以获得丢失的文件。这个包的问题是 setup.py 没有在创建 egg 的包列表中包含发行版的根目录。要解决此问题,您可以编辑 setup.py 并替换以下行:

     packages = find_packages(),

和:

     packages = ['','test'],

然后,运行python setup.py install将正确安装包。

于 2010-04-22T20:50:46.423 回答
1

据我所知,pypi 上的 BitTorrent_bencode-5.0.8-py2.4.egg 不包含 bencode.py。
我会下载源代码并手动将 bencode.py 和 BTL.py 复制到您的站点包文件夹中。

于 2010-04-22T20:02:23.627 回答
1

您也可以使用该bzrlib.bencode软件包。这使用easy_installor安装pip

于 2010-10-03T15:49:56.717 回答
1

使用 pip 安装 bencode.py

而不是 pip install bencode

于 2021-05-26T09:37:37.000 回答
0

方法是将 .egg 添加到sys.path. 最简单的方法将 .pth 文件放入site-packages/包含 egg 文件名的文件中:

BitTorrent_bencode.pth

BitTorrent_bencode-5.0.8-py2.6.egg

如果此时仍无法正确导入,则可能是模块或包名称错误。在可以打开 .zip 文件的地方打开 .egg 文件并检查内部结构以获取提示。

于 2010-04-22T19:59:42.307 回答