python复制已存在的虚拟环境venv,虚拟环境迁移,解决“Fatal error in launcher: Unable to create process using”

如何复制别人的虚拟环境

  • 引言
  • 虚拟环境的结构
  • 修改步骤
    • 1. 修改`pyvenv.cfg`文件里的`home`和`version`
    • 2. `Scripts\activate`以及`Scripts\activate.bat`
    • 3. 删除Lib\pip
    • 4. 重新安装并更新pip

引言

有的时候我们从github上下载下来的python项目直接带有虚拟环境,尤其是那些需要很多很复杂的包的项目,如果能够获得别人配置好的虚拟环境直接拿来用,就可以省很多事。拿到虚拟环境,需要做一些修改才能顺利食用。

虚拟环境的结构

一个项目的虚拟环境是由以下4个文件或文件夹组成的,如下图
python复制已存在的虚拟环境venv,虚拟环境迁移,解决“Fatal error in launcher: Unable to create process using”_第1张图片
其中Lib文件夹里存放的就是我们安装的一些第三方库,Scripts文件夹很重要,它里面的activate文件是用于激活虚拟环境的,还有pyvenv.cfg文件是这个虚拟环境的配置文件。

修改步骤

1. 修改pyvenv.cfg文件里的homeversion

python复制已存在的虚拟环境venv,虚拟环境迁移,解决“Fatal error in launcher: Unable to create process using”_第2张图片
home改成你的系统里Python安装的路径即可,只需要到python.exe的父目录这一级,version同样对应的改成你系统安装的python的版本,如果你不知道版本是什么,可以打开cmd,使用下面这个命令查看。

python -V

python复制已存在的虚拟环境venv,虚拟环境迁移,解决“Fatal error in launcher: Unable to create process using”_第3张图片

2. Scripts\activate以及Scripts\activate.bat

activate文件里的VIRTUAL_ENV改成你的项目的虚拟环境所在的目录,注意只到venv这一级即可。
python复制已存在的虚拟环境venv,虚拟环境迁移,解决“Fatal error in launcher: Unable to create process using”_第4张图片
activate.bat文件里的set VIRTUAL_ENV改成你的项目的虚拟环境所在的目录,注意只到venv这一级即可。
python复制已存在的虚拟环境venv,虚拟环境迁移,解决“Fatal error in launcher: Unable to create process using”_第5张图片
到这里,如果你在控制台使用venv\Scripts\activate命令激活虚拟环境的话,大概率会出现报错,错误是这样的Fatal error in launcher: Unable to create process using '"E:\Myblog\venv\Scripts\python.exe" "D:\PythonProgram\Myblog\venv\Scripts\pip.exe" list': ???????????

3. 删除Lib\pip

上面这个报错原因好像是pip的二进制文件里的路径没有改回来,但是改二进制文件比较麻烦,所以我的办法是直接去Lib文件夹下把pip的两个相关文件夹直接删除。
在这里插入图片描述
注意Scripts文件夹下有一个或一个以上的pip.exe,这个不要删除

4. 重新安装并更新pip

先直接更新pip试试(-i https://pypi.douban.com/simple/表示使用豆瓣镜像)

python -m pip install --upgrade pip -i https://pypi.douban.com/simple/

如果报错No module named pip,那就先后输入以下两条指令

python -m ensurepip

easy_install pip

然后再更新pip

python -m pip install --upgrade pip -i https://pypi.douban.com/simple/

最后在控制台使用

# 我的虚拟环境的文件夹叫做venv,换成你的项目的虚拟文件夹名字即可
venv\Scripts\activate

命令激活虚拟环境就大公告成了

你可能感兴趣的:(python,开发语言)