CMD中conda&python报warning 记录
起因
今天心血来潮, 想把几年前搭建的Win10下的Anaconda3+pycharm+Tensorflow-gpu的环境更新一下, 刚刚安完了 anaconda, 准备用conda
一键安装 Tensorflow2-gpu(以前自己安装CUDA+CUDnn版本一点点对不上就用不了 tf 的QwQ, 现在conda
方便太多).
我就试试输入python
, 结果报了 2 个常见 Warning.
Warning.1:
This Python interpreter is in a conda environment, but the environment ha not been activated. Libraries may fail to load. To activate this environmen please see https://conda.io/activation
Warning.2:
$ python
Python 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type “help”, “copyright”, “credits” or “license” for more information.
Failed calling sys.interactivehook
Traceback (most recent call last):
File “C:\Anaconda3\lib\site.py”, line 439, in register_readlinreadline.read_history_file(history)
File “C:\Anaconda3\lib\site-packages\pyreadline\rlmain.py”, line 165, in read_history_file self.mode._history.read_history_file(filename)
File “C:\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py”, line 82, in read_history_file
for line in open(filename, ‘r’):
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa8 in position 388: illegal multibyte sequence
>>>
Warning 1
在最初的 cmd 里面执行命令 conda info
可以发现如下信息:
λ conda info
active environment : None
shell level : 0
…blahblah…
然后输入命令activate base
(base 是 anaconda 的基本环境), 可以发现输出变了:
λ conda info
active environment : base
active env location : C:\Anaconda3
shell level : 1
user config file : C:\Users\leonrein.condarc
…blahblah…
发现了吧, 新版 anaconda 并没有像以前或 Ubuntu 内那样自动激活 base 环境.
解决方案(欢迎补充):
- 每次手动
activate base
一下再用命令行的 python - 使用 Anaconda3 安装时自带的 Anaconda Prompt, 这个命令行自动激活 base, 在 Windows 开始菜单搜一下就有的.
- 也是我的方案, 我用的是 cmder 代替的普通 cmd. 在 Settings->Startup->Environment 里面, 添加别名即可:
alias python=activate base && python
Warning 2
参考了一遍各种网页, 提供一下方案:
-
不影响, 除了难看一点点hhh, 多敲几行命令/代码就被顶上去看不见了.
-
(推荐)很可能是由于是读某个文件,有编码问题. 根据 Warning 内容, 打开 history.py 这个文件, 我的是
C:\Anaconda3\lib\site-packages\pyreadline\lineeditor\history.py
在原有的第 82 行 open 函数里新增一个参数选项
encoding='utf-8'
即改为:for line in open(filename, ‘r’,encoding=‘utf-8’):
-
在 C:\user\username\ 下, 删除以前的残留文件:
.python_history
即可.我看了一下, 里面有一些中文. 不过我试了一下, 如果以后 python 命令行中又有中文, 下一次执行python
还是会报 Warning. 唉, 估计是 py 默认的 utf-8 和 windows 在 cmd 内默认的 gbk 冲突吧.