无需 pip install 在本地创建 virtualenv 的副本

无需 pip install 在本地创建 virtualenv 的副本

有时需要创建退出的副本虚拟环境测试我们项目的额外功能。

在这种情况下,我们需要创建现有环境的副本并添加一些要求。

下面提到了创建现有虚拟环境副本的方法之一:

# while using existing virtualenv
(oldenv): pip freeze > requirements.txt

# after creating and logged-in to new virtualenv
(newenv): pip install -r requirements.txt

# where requirements.txt is the same file created using (oldenv)

但我个人并不喜欢这种方式。为什么?因为安装了已经存在的相同包,所以我们可以重复使用。重复使用或者说复制不仅可以减少额外的时间和精力,还可以将互联网带宽的使用降至零,特别是对于有限和缓慢的互联网用户。

太棒了!那么还有哪些其他方法可以创建现有虚拟环境本地?

我知道另外两种方法,下面我会提到。希望这些方法对你有帮助。

答案1

创建现有虚拟环境副本的第一种方法是ProjectAenv

  1. 将 ProjectAenv 复制到其他名称或目录:

    cp -R /home/sk/Path1/ProjectAenv /home/sk/Path2/ProjectBenv
    

    /home/sk/Path1/ProjectAenv虚拟环境的绝对路径在哪里项目Aenv

  2. 然后打开activate新复制的文件本夫计划使用您喜欢的编辑器:

    gedit /home/sk/Path2/ProjectBenv/bin/activate
    
  3. 找到这条线VIRTUAL_ENV="/home/sk/Path1/ProjectAenv"并将其替换为:

    VIRTUAL_ENV="/home/sk/Path2/ProjectBenv"
    

    保存并关闭文件。

就是这样!您的新环境本夫计划复制自项目Aenv并可立即使用。我使用这种方式很长时间了,从未遇到任何问题,尽管我推荐第二种复制方式。

创建现有虚拟环境副本的第二种方法(推荐)

  1. 下载虚拟环境克隆

    wget https://pypi.python.org/packages/source/v/virtualenv-clone/virtualenv-clone-0.2.6.tar.gz
    tar -zxvf virtualenv-clone-0.2.6.tar.gz
    cd virtualenv-clone-0.2.6
    
  2. 安装虚拟环境克隆在任何虚拟环境中:

    virtualenv newenv            # create a new environment. You can use any existing one.
    source newenv/bin/activate   # login to newenv
    (newenv): python setup.py install  # install virtualenv-clone in newenv
    # be sure that you are inside the directory "virtualenv-clone-0.2.6"
    

    virtualenv-clone将被安装在 newenv 里面。

  3. 现在,以 newenv 身份登录后,我们可以创建任何现有环境的副本。例如,创建 ProjectAenv 的副本:

    (newenv): virtualenv-clone ProjectAenv ProjectBenv 
    (newenv): deactivate             # to come out from newenv.
    

如有任何建议或更改,请发表评论。

答案2

只想补充@SauravKumar的手动方法。修复activate脚本中的路径是必要的,但还不够。您还需要修复其他脚本中的路径,例如pippip2等。

最简单的方法是在虚拟环境bin文件夹中搜索您的路径,例如:

root@www:/var/www/app/venv/bin# grep "/tmp/app/HadithHouseWebsite/venv" * -R
activate:VIRTUAL_ENV="/tmp/app/HadithHouseWebsite/venv"
activate.csh:setenv VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
activate.fish:set -gx VIRTUAL_ENV "/tmp/app/HadithHouseWebsite/venv"
django-admin:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
django-admin.py:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
easy_install-2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pbr:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
pip2.7:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
python-config:#!/tmp/app/HadithHouseWebsite/venv/bin/python
sqlformat:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7
wheel:#!/tmp/app/HadithHouseWebsite/venv/bin/python2.7

然后浏览这些文件并更改您需要的文件。大多数情况下您需要更改activate*文件和pip*文件。

希望这可以帮助。

相关内容