我的初始环境:
- win10 x64系统
- 已安装基于python3.6版本的anaconda
- 已在anaconda中安装py27的虚拟环境(不会安装可以看这里)
- 已有的jupyter notebook的kernel是基于python3.6版本的
在之前的文章中,我是将anaconda的虚拟环境py27安装在指定路径(G:\Anaconda\envs\py27),因此在安装ipykernel时,也需要指定安装。 安装命令为 “conda install --prefix=G:\Anaconda\envs\py27 ipykernel”,如下:
接下来会有一个选项,选y就行。
接着进入py27虚拟环境中,输入python -m ipykernel install --user
TraceBack了,,,,
哇我他妈贼难受!!
老子为什么要给计算机起中文名?!?!?!?!?!
现在是2019年8月31日下午15:33:06,经过一晚上和一上午的尝试,我他妈,看源码,调试,查资料,看官方文档都试过了,终于找到了解决方案。
期间的错误案例我就不说了,直接给出解决方案。。。。
居然是,改源码。
奇了怪了,我Python3在输入python -m ipykernel install --user命令的时候就没事,轮到Python2就不行,看来py2.x对中文的支持是真的差,pip一些包的时候也是经常报错,原因就是它他妈默认ASCII进行解码,而不是utf-8!
仔细分析我的报错文件,一个个找,最终在最后一个地方。
envs\py27\lib\site-packages\traitlets\traitlets.py这个文件下
进去找第2053行。。。
class Unicode(TraitType):
"""A trait for unicode strings."""
default_value = u''
info_text = 'a unicode string'
def validate(self, obj, value):
if isinstance(value, six.text_type):
return value
if isinstance(value, bytes):
try:
return value.decode('ascii', 'strict')
except UnicodeDecodeError:
msg = "Could not decode {!r} for unicode trait '{}' of {} instance."
raise TraitError(msg.format(value, self.name, class_of(obj)))
self.error(obj, value)
这个类里,我把ascii改为utf-8,失败
改成gbk,成功。
虽然报了warning,but,,it works2333
image.png
最简单的一个测试方法:
2333!
我赢(Yíííííng)了,宁呢?!
开始搞《Python核心编程》!
2019年9月3日更新:
Python2.7版本的kernel只能在py27的env环境下打开。
Python3版本(base)的kernel能在base和py27的env环境下打开。