基于Pycharm创建的虚拟环境移植问题

基于Pycharm创建的虚拟环境移植问题


问题的引出

​ 在昨天夜里,我突发奇想要不要把我创建的虚拟环境git上去,这样以后要是出了什么事,也不必一个一个包的再去安装,所以我就将整个PYTHON_ENV文件夹拷贝到了我的GIT文件夹下。拷贝完成之后,来随便写一个Hello World!来验证一下,拷贝过来的虚拟环境它还可以用吗?

​ 于是便开始了一系列的工作:

  1. 添加虚拟环境:

  1. 验证是否可用:

    哎,我们发现复制过来的环境居然可以使用哎!这难道不是一件很开兴的事吗?

  2. 问题出现:

    后来在在使用Terminal的时候发现,在这里面使用我们的pip命令之后,它居然是全局的命令,这就很不友好,要记得在没有拷贝之前,使用这些命令的作用范围都是虚拟环境内的,那这该怎么办呢?


问题的发现

查看虚拟环境文件夹

​ 出现问题之后,就逐渐开始怀疑虚拟环境所在的文件夹了,是不是里面有着相关的配置文件呢?

​ 我们来看看其中的文件构造:

其中include文件夹是一个空文件夹,而pyvenv.cfg的内容呢,是我们基于什么环境所创建的虚拟环境。

home = D:\Install\Python\Python372
include-system-site-packages = false
version = 3.7.2

​ 那么,此时问题肯定就在剩余的文件夹中了,而打开lib文件夹发现这里面都是一些我们所安装的包的一些相关文件。此时问题便逐渐的归到了Scripts文件夹了,打开文件夹一看:

那么此时,问题便可归于前四个文件了,active,active.bat,Active.ps1,deactive.bat.

创建一个新的虚拟环境与之比对

​ 由于我们可能已经找到了引起这个问题出现的关键性文件,所以我们便可以在随便再创建一个文件与它进行比对:

  1. active文件:

    在这个文件中我们发现了一共有两处不同:

那么,很容易看出第一处不同是路径,它还是我拷贝之前的路径,第二处不同显然是虚拟环境的名称,现在我们将它改正过来。

  1. activate.bat文件:

    这和上面的问题都一样。

  2. Activate.ps1文件:

    同样是路径的问题。

  3. deactive.bat文件:

​ 没有差别。

解决方法

  1. 找到你所创建的虚拟环境文件夹。

  2. 打开Scripts文件夹。

  3. 找到active文件,找到第40行,将VIRTUAL_ENV=" "双引号里改为你拷贝后的路径。

  4. 找到active.bat文件,找到第11行,将set "VIRTUAL_ENV=改为你拷贝后的路径。

  5. 找到Active.ps1文件,找到第30行,将$env:VIRTUAL_ENV=" "双引号里改为你拷贝后的路径。

  6. 在这里有两种方法:

    1. 如果你的pip版本不是最新的,你可以采用如下方式:

      在全局环境下激活我们的虚拟环境

      运用 python -m pip install --upgrade pip命令

      # 示例
      # 打开命令行输入如下代码
      D:\Data\GIT\python_Practice\PYTHON_ENV\DIGIFAX_ENV\Scripts\activate.bat # 这里的路径是你虚拟环境下的路径
      python -m pip install --upgrade pip
      
    2. 进入虚拟环境下,删除Scripts文件夹下的

      接着删除Lib\site-packages下!

      然后进入Pycharm的环境配置界面,会看见有黄色高亮的这一行,点击Insatll packaging tools便可。

      然后静待片刻,就会发现和以前一样可以使用了,如若不行再来一次!

    ​ 当然了,你要是觉得此种方法有点麻烦,你可以在pycharm中指定一个旧版本的pip进行安装,再将其更新,采用第一种方法。

posted @ 2021-06-16 18:11  HighLight_FanYa  阅读(686)  评论(0编辑  收藏  举报