【精】Jupyter Notebook同时支持Python2和Python环境

我的初始环境:

  • 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环境下打开。

你可能感兴趣的:(【精】Jupyter Notebook同时支持Python2和Python环境)