目录
1.如何在cmd中用python
2.PYTHONHOME的重要性
3.深受PYTHONHOME之苦的Anaconda
安装完anaconda后,想用cmd查看、使用python,大部分人可能会遇到‘python不是不是内部命令或外部命令,也不是可执行程序解决方案’。原因很简单,系统里面没有“python”这个变量,那就添加环境变量吧:
此电脑->属性->高级系统设置->环境变量,在系统变量里找到“PATH”,然后添加以下路径:
F:\Anaconda2
F:\Anaconda2\Library\bin
F:\Anaconda2\Scripts
这三个路径要灵活处理,主要看你需要添加的python版本号,因为anaconda是可以管理多个版本的。例如上述的路径是添加改版本anaconda默认的python版本,该版本的python解析器就在F:\Anaconda2下。设置好环境变量,在cmd中输入python:
如果想切换版本,就需要在“PATH”中修改,比如修改成喵哥在anaconda里添加的python3.6:
F:\Anaconda2\envs\x64_36
F:\Anaconda2\envs\x64_36\Library\bin
F:\Anaconda2\envs\x64_36\Scripts
然而,有一点需要注意:
如果在系统变量里添加了PYTHONHOME变量,必须要求PYTHONHOME与PATH中的第一个(上述)路径保持一致,不然会报错:
E:\>python
Fatal Python error: Py_Initialize: unable to load the file system codec
File "F:\Anaconda2\lib\encodings\__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Current thread 0x00002a44 (most recent call first):
当然,删掉PYTHONHOME也是一种选择,但是PYTHONHOME变量是有其存在意义的,欲知详情,往下读。
PYTHONHOME变量用的地方比较多,比较常见的就是C++调用python,喵哥在其他博客(“探坑”——在C++中执行python脚本的艰辛尝试)也提到过,如果不定义一个正确的PYTHONHOME变量,会遇到类似以下的错误:
Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
另外,PYTHONHOME变量的路径值也要跟调用python的版本一致,不然会出现以下错误:
Fatal Python error: Py_Initialize: unable to load the file system codec
File "F:\Anaconda2\lib\encodings\__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Current thread 0x00002a44 (most recent call first):
其实PYTHONHOME影响的不只是其他运用python的工作,还影响管理python的工作——anaconda。
喵哥安装的Anaconda是默认2.7的python,由于工作需要,喵哥把PYTHONHOME设置为默认的python:
F:\Anaconda2
又由于工作需要,喵哥在navigator管理的python3.6打开Spyder,没有打开,出现了由于PYTHONHOME设置值与使用python版本不一致的错误:
这个跟前面叙述的差不多,所以修改PYTHONHOME的值就好了。。。。。。吗?
too young,too simple!
喵哥根据调用C++时遇到的问题,照旧修改PYTHONHOME,根据所需修改PYTHONHOME为
F:\Anaconda2\envs\x64_36
这个时候就尴尬了,连navigator都打不开,点击图标,鼠标等待圈就闪退,显然是打不开了。根据网上的方法,在系统盘里的user-用户名下删除.Spyder等文件夹也没有成功,不过这个方法对于PYTHONHOME不存在或者是anaconda默认python路径的情况下,打不开Spyder时是有效的。
然而,现在的问题不一样,删了这些文件夹,点击图标依旧是鼠标转圈圈。难道就用不了其他版本的Spyder么?
删掉PYTHONHOME万事大吉!!!
第一次觉得这个界面也蛮可爱嘛!
需要用的时候记得再添加PYTHONHOME变量。