admin管理员组

文章数量:1794759

python代码在linux和windows运行不一致问题

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吧。

本文标签: 代码PythonwindowsLinux