关于python:导入BitTorrent bencode模块

Importing BitTorrent bencode module

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

但是,如何导入和使用此模块?

1
>>> import bencode

不起作用......

1
2
3
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.framework/Versions/2.6/Extras/lib/python/PyObjC', '/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode']


谢谢


BitTorrent_bencode-5.0.8-py2.4.egg坏了。如果您使用解压缩查看鸡蛋的内容,您将看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ 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并替换说明的行:

1
     packages = find_packages(),

有:

1
     packages = ['','test'],

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


您也可以使用bzrlib.bencode包。这将与easy_installpip一起安装。


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


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

BitTorrent_bencode.pth

1
BitTorrent_bencode-5.0.8-py2.6.egg

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