admin管理员组文章数量:1794759
python代码在linux和windows运行不一致问题
问题描述: windows10,anaconda,python3.6
相同的python代码,在linux运行时提示:
/usr/local/lib/python2.7/dist-packages/torch/serialization.py:255:UnicodeWarning: Unicode unequal comparison failed to convert both arguments toUnicode - interpreting them as being unequal
iforiginal_source != current_source:
/usr/local/lib/python2.7/dist-packages/torch/serialization.py:286:SourceChangeWarning: source code of class 'torch.nn.modules.conv.Conv2d' haschanged. you can retrieve the original source code by accessing the object'ssource attribute or set `torch.nn.Module.dump_patches = True` and use the patchtool to revert the changes.
然后把Linux运行得到的 .t7文件放到Windows下运行,报错:
Traceback (most recent call last): File "main.py", line 66, in <module> checkpoint = torch.load('./checkpoint/ckpt.t7') File "D:\\Anaconda3\\lib\\site-packages\\torch\\serialization.py", line 231, in load return _load(f, map_location, pickle_module) File "D:\\Anaconda3\\lib\\site-packages\\torch\\serialization.py", line 379, in _load result = unpickler.load() UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 875: ordinal not in range(128)
坎坷解决路途:
在终端输入:
python -c "import sys; print(sys.getdefaultencoding())"
在windows显示 utf-8, 而在Linux显示 ascii。因为python3.6默认的是utf-8编码,Linux默认的python2.7是ascii编码。
首先我在Linux系统上的py文件头加上:
import sys defaultencoding = 'utf-8' if sys.getdefaultencoding() != defaultencoding: reload(sys) sys.setdefaultencoding(defaultencoding) 代码来自:wwwblogs/CasonChan/p/4669799.html 还是没有解决。 于是,我只能换python版本。 最终可行解决方案: 1、在Linux 自己目录下安装 miniconda:conda.io/miniconda.html 2、使用 pip 安装自己需要的工具包。别用conda 3、愉快地使用python3.6 on Linux吧。版权声明:本文标题:python代码在linux和windows运行不一致问题 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686875499a113533.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论