主要问题是封装后,调用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 两句,然后再重新封装。 |
|