记录一下创建虚拟环境的问题
电脑上python2和python3都安装了,同时系统的环境变量Path配置完成。python2的安装目录下执行程序是python.exe,python3的安装目录下执行程序是python3.exe。
使用 virtualenvwrapper-win 管理工具创建python3虚拟环境时出现了一些问题。
1.cmd执行python时进入python2环境,执行python3时进入python3环境。
此时使用Pycharm创建项目时使用virtualenv创建虚拟环境报错 Error:[WinError 2] 系统找不到指定的文件 ,这个原因是因为pycharm默认会去python3的安装目录下找python.exe去创建虚拟环境,但此时那个位置的执行程序名字已经被我改成了python3.exe,所以会创建失败。
我安装过了 virtualenvwrapper-win 这个虚拟环境管理工具,此时可以直接在cmd使用 mkvirtualenv flask01 创建一个flask01虚拟环境,但是进入虚拟环境后无法使用pip命令安装第三方模块(可以正常使用python3进入shell),报错 No python at “D:\Python\python.exe”
解决办法:
- 将python3安装目录下的python3.exe改成python.exe
- 将python2安装目录下的python.exe改成python2.exe
修改完成后cmd执行python进入python3环境,执行python2进入python2环境。
这时会发现Pycharm可以使用virtualenv创建虚拟环境了。但是会引发另一个问题: virtualenvwrapper-win 这个虚拟环境管理工具的 mkvirtualenv 命令无法使用了(其它命令如workon deactivate rmvirtualenv都正常),解决办法如下:
2.cmd执行python时进入python3环境,执行python2时进入python2环境。
这时直接使用mkvirtualenv + 环境名 报错Fatal error in launcher:Unable to create process using D:\xxx\xxxx.exe" 系统找不到指定的路径
这个错误的原因是mkvirtualenv去寻找python3.exe这个程序创建虚拟环境,但是python3.exe已经在上一步中被改名成了python.exe,所以虚拟环境创建失败(这里已经可以正常使用virtualenv创建虚拟环境了,如果不需要使用virtualenvwrapper-win这个管理工具的话之后的步骤可以忽略)
在cmd中(虚拟环境外面)执行pip也会报错:Fatal error in launcher: Unable to create process using '“D:\Python\python3.exe” “D:\Python\Scripts\pip.exe” ': ??? 引发这个错误的原因和上面一样。
解决办法:
- 在python3的安装目录下将上一步改名的python.exe复制一份,并命名为python3.exe
现在使用Pycharm的virtualenv可以正常创建虚拟环境,同时virtualenvwrapper-win管理工具也可以正常使用。
3.总结
- 将python3安装目录下的python3.exe改成python.exe
- 将python2安装目录下的python.exe改成python2.exe
- 在python3的安装目录下将 1 中改名的python.exe复制一份,并命名为python3.exe
刚入门python,虽然是很小的问题,但也折腾了一下午才解决了。。。可能会有更简单的方法,大佬们勿喷。