Win平台实现本地Python虚拟环境复制迁移

我主张在虚拟环境中开发/测试应用程序。如何利用一个现有 venv 环境呢, 傻傻的我把其它工程的 venv 目录复制一份,她真的能工作吗?

假设在 dirA 目录下拥有一个叫做 venv 的Python虚拟环境, 进入虚拟环境下

pip list 

嗯,正常的显示所有已经安装的库。

现在我想在 ProjA 里面使用 dirA 中 env 环境,并添加其它安装包。将其复制到 ProjA 目录下之后,进入虚拟环境下。

where pip

你会惊奇的发现,最先出现的 pip路径,不是当前虚拟环境的 pip路径,而是 dirA/venv 中的 pip路径。
删除/重命名 dirA/venv目录, 在ProjA/venv的虚拟环境中执行where pip就只能找到系统的 pip, 那么当前环境的pip跑哪里去了呢?

谷歌/百度一番之后,终于没有任何答案!!!

一定是路径有问题

一次发现,一次喜悦,一次失败

带着疑问,我首先打开 venv\Scripts 下面的一个文件

activate
activate.bat
Activate.ps1
deactivate.bat

别问我为什么是这四个文件, 因为他们是虚拟环境的入口/出口

VIRTUAL_ENV="D:\CommonUser\Documents\BookCode\Python\PythonCode\dirA\rqalpha-git\rqalpha\env"

路径用的是绝对路径!!!
先改成:

VIRTUAL_ENV="D:\CommonUser\Documents\BookCode\Python\PythonCode\ProjA\rqalpha-git\rqalpha\env"

重新进入ProjA/venv , pip list

Fatal error in launcher: Unable to create process using '"'

好了,出现这个奇怪的错误!!!

搜索失败!放弃!放弃!

搜索一大堆答案,终究是毫不相关的东西,随便pip安装不就好了吗,谁没有网络,谁会去折腾这些呢?想想也是喔, 放弃!

再再次发现尝试,终成功!

之前修改虚拟环境入口/出口都没有问题了,where pip 命令也能找到她了,为什么 pip list 就失败了呢?一定是 pip 程序本身有问题!

通过 winHex 比较系统的 pip和虚拟环境中的pip,果然不一样!

仔细观察,我发现了熟悉的一串字符串,就是那个曾经替换的绝对路径出现在她里面了!

#!d:\commonuser\documents\bookcode\python\pythoncode\dirA\rqalpha-git\rqalpha\env\scripts\python.exe

原来pip会执行时会释放内部的 python代码,并且采用指定的绝对路径的 python.exe,当找不到 python.exe 时导致创建 Python 进程失败,报出诡异错误!

赶紧修改这该死的路径,以此类推,Scripts下的所有 exe 都需要修改路径。
这次手动修改为正确路径之后,重新进入 ProjA/venv, 重新运行 pip list 很好! 成功显示所有虚拟环境的模块。

自此终于解决一直搞不定的问题,分析问题的能力真的很重要,需要不断加强!

作为一个 软件工程师,手动修改多么 Low 啊!分分钟写出一段自动修改的代码。

加好友 & 代码下载

这里写图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值