【问题标题】:Importing BitTorrent bencode module导入 BitTorrent bencode 模块
【发布时间】:2011-02-11 05:53:39
【问题描述】:

我使用的是 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 包含的模块名称?

系统路径 ['', '/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/版本/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/库/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/Version s/2.6/Extras/lib/python/wx-2.8-mac-unicode']

谢谢

【问题讨论】:

    标签: python macos egg


    【解决方案1】:

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

    BitTorrent_bencode.pth:

    BitTorrent_bencode-5.0.8-py2.6.egg
    

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

    【讨论】:

    • 已经有easy-install.pth包含"import sys; sys.__plen = len(sys.path) ./BitTorrent_bencode-5.0.8-py2.6.egg import sys; new= sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p +len(new)" 够了吗?
    • 当然。在这种情况下,您应该继续我的其余答案。如果 that 也没有产生任何结果,那么鸡蛋本身就坏了,你应该通知上游。
    【解决方案2】:

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

    【讨论】:

    • Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] 在 darwin 上键入“帮助”、“版权” 、“学分”或“许可”以获取更多信息。 >>> from BitTorrent.bencode import bencode Traceback(最近一次调用最后一次):文件“”,第 1 行,在 ImportError: No module named BitTorrent.bencode :-(
    • 我正在更改我的答案,因为我尝试使用 pip 在 Osx 上运行,但遇到了同样的错误。我尝试解压缩 .egg,但没有找到来源。
    【解决方案3】:

    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 将正确安装包。

    【讨论】:

    • 好的,谢谢!实际上,我已经手动将 bencode.py 和 BTL.py 复制到了站点包中。
    • 这仍然不正确,无论如何——正确的条目应该是 'py_modules = "bencode"',完全删除了 'packages' 行。
    【解决方案4】:

    您也可以使用bzrlib.bencode 包。这与 easy_install 或 pip 一起安装。

    【讨论】:

      【解决方案5】:

      使用 pip install bencode.py

      而不是 pip install bencode

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-15
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 2015-10-06
        • 2013-04-05
        • 1970-01-01
        • 2023-04-05
        相关资源
        最近更新 更多