Windows10上解决python3.7与python3.8共存的问题
背景:因为一些原因,需要同时用到python3.7的32位与python38. 平时以3.8 64位为主环境。一、分别安装python3.7,python3.8,确保3.7与3.8运行都正常可能踩到的坑,安装完python3.7后,3.7运行正常。安装完python3.8后,3.8运行正常,再次运行3.7时一直报错,如下:Fatal Python error: initfsencoding: un
背景:因为一些原因,需要同时用到python3.7的32位与python38. 平时以3.8 64位为主环境。
- python,pip,pip3,都是运行在3.8下;
- python37,pip37,pip3.7都是运行在3.7下;
一、分别安装python3.7,python3.8,确保3.7与3.8运行都正常
可能踩到的坑,安装完python3.7后,3.7运行正常。安装完python3.8后,3.8运行正常,再次运行3.7时一直报错,如下:
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
哪怕是卸载3.7与3.8,重启系统后再次仅安装3.7,环境变量也指向3.7,但就是报上面的错误。
解决办法:设置PYTHONPATH环境变量,指向:
PYTHONHOME=C:\Users\dengq\AppData\Local\Programs\Python\Python37-32
PYTHONPATH=%PYTHONHOME%\DLLs;%PYTHONHOME%\Lib;%PYTHONHOME%\Lib\site-packages
然后3.7就好了,不报上面的错误了,即使再把上面的两个环境变量删除,重启系统,也是好的,很奇怪的问题。
二、修改3.7中pip.exe文件
按照如下链接中所述,修改3.7中pip.exe的名称与二进制文件内容
修改pip.exe二进制文件中python.exe的位置
把python37-32\python.exe改名与python37.exe
把python37-32\pythonw.exe改名与pythonw37.exe
把python37-32\Scripts\pip.exe改名与pip37.exe
按照上面链接中所述,修改pip37.exe文件中引用的python.exe路径,改为引用python37.exe文件。
网上的文章都是到这一步就可以了,但我又踩到一坑,修改完成后,
运行python37.exe正常
运行pip37.exe报错
补充知识:安装python时pip.exe中写死了引用的Python.exe文件的绝对路径,因为我们修改python.exe文件的名称,所以需要同步修改pip.exe中引用的路径,否则会报找不到python.exe的错误
三、重新安装3.7中的pip
前提:
运行python37.exe正常
运行pip37.exe报错
运行完以下命令后,会在python37-32\Scripts目录下重新生成pip.exe,pip3.exe,pip3.7.exe。仅保留一个且改名为pip37.exe,另外的所有文件全部删除
python37 -m pip install --upgrade pip --force-reinstall
采用此命令重新安装pip时,pip.exe中会自动指向python37.exe文件,不会像初次安装那样指向python.exe
[引用原谅链接](https://blog.csdn.net/weixin_42101177/article/details/102971339)
最终环境变量设置,以下目录都需要加入到PATH中:
python37-32;python37-32\Scripts;python38;python38\Scripts;
更多推荐
所有评论(0)