分享

cx_freeze打包含有paramiko模块的程序

 Tech-d 2013-02-27
主要问题是封装后,调用paramiko时,会有两个错误发生:
错误一:
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/cx_Freeze/initscripts/Console.py", line 29, in <module>
    exec code in m.__dict__
  File "RelightMultiRender.py", line 20, in <module>
  File "/JGHome/xiangquan/eric/RelightMultiRender/response.py", line 16, in <module>
    from Ui_MainWindow import Ui_MainWindow
  File "/JGHome/xiangquan/eric/RelightMultiRender/Ui_MainWindow.py", line 12, in <module>
    import paramiko
  File "/usr/lib/pymodules/python2.6/paramiko/__init__.py", line 69, in <module>
    from transport import randpool, SecurityOptions, Transport
  File "/usr/lib/pymodules/python2.6/paramiko/transport.py", line 34, in <module>
    from paramiko.channel import Channel
  File "/usr/lib/pymodules/python2.6/paramiko/channel.py", line 36, in <module>
    from paramiko import pipe
ImportError: cannot import name pipe

发生问题的原因是cx_freeze不知为什么没有把paramiko中的pipe.pyc文件封装到library.zip中,解决方法是解压library.zip,将缺少的pipe.pyc文件添加到其中的paramiko文件夹中,再重新打包为library.zip,然后替换掉旧的文件包。

错误二:
运行程序到连接ssh时,会出现“ LookupError: unknown encoding: idna ” 。
idna:Internationalized domain name, 用来做远程连接的文字编码。
光在源文件import部分添加from encodings import idna是不够的,因为idna.py文件里也用到了ascii编码,因此也需要引用ascii.py才行,所以最终需要在文件引用部分添加:
from encodings import ascii
from encodings import idna
两句,然后再重新封装。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多