如何复制和迁移已存在的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个文件或文件夹组成的,如下图
    虚拟环境目录结构
    其中Lib文件夹里存放的就是我们安装的一些第三方库,Scripts文件夹很重要,它里面的activate文件是用于激活虚拟环境的,还有pyvenv.cfg文件是这个虚拟环境的配置文件。

    修改步骤

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


    home改成你的系统里Python安装的路径即可,只需要到python.exe的父目录这一级,version同样对应的改成你系统安装的python的版本,如果你不知道版本是什么,可以打开cmd,使用下面这个命令查看。

    python -V
    

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

    activate文件里的VIRTUAL_ENV改成你的项目的虚拟环境所在的目录,注意只到venv这一级即可。

    activate.bat文件里的set VIRTUAL_ENV改成你的项目的虚拟环境所在的目录,注意只到venv这一级即可。

    到这里,如果你在控制台使用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
    

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

    物联沃分享整理
    物联沃-IOTWORD物联网 » 如何复制和迁移已存在的Python虚拟环境venv,并解决”Fatal error in launcher: Unable to create process using”问题

    发表评论