django 如何复制virtualenv

mccptt67  于 2023-01-03  发布在  Go
关注(0)|答案(9)|浏览(147)

我有一个现有的virtualenv,里面有很多包,但是是旧版本的Django。
我想做的是复制这个环境,这样我就有了另一个拥有完全相同包的环境,* 但是 * 有一个更新版本的Django。我该怎么做?

jhkqcmku

jhkqcmku1#

最简单的方法是使用pip生成一个需求文件,一个需求文件基本上是一个包含你想要安装的所有python包(或者已经安装的pip生成的文件)以及它们的版本的列表。
要生成需求文件,请进入原始virtualenv并运行:

pip freeze > requirements.txt

这将为你生成一个 requirements.txt 文件。如果你在你喜欢的文本编辑器中打开这个文件,你会看到类似于:

Django==1.3
Fabric==1.0.1
etc...

现在,将Django==x.x行编辑为Django==1.3(或者您想在新的virtualenv中安装的任何版本)。
最后,激活您的virtualenv,并运行:

pip install -r requirements.txt

pip会自动下载并安装所有列在 requirements.txt 文件中的python模块,不管你指定了什么版本!

qlfbtfca

qlfbtfca2#

另一个选项是使用virtualenv-clone包:
用于克隆不可重定位的virtualenv的脚本。

2w3kk1z5

2w3kk1z53#

virtualenvwrapper提供复制virtualenv的命令

cpvirtualenv ENVNAME [TARGETENVNAME]
l7mqbcuq

l7mqbcuq4#

最简单的选择是使用virtualenv-clone封装。
要将venv1复制到venv2,请按照下列步骤操作:
1.在venv1或虚拟虚拟环境venv_dummy中安装virtualenv-clone。要创建venv_dummy

python -m virtualenv venv_dummy
source venv_dummy/bin/activate

1.要安装virtualenv-clone

(venv_dummy): pip install virtualenv-clone

1.要将venv1复制到venv2

(venv_dummy): virtualenv-clone venv1/ venv2/
rpppsulh

rpppsulh5#

如果您使用的是Anaconda,则只需运行:

conda create --name myclone --clone myenv

这会将myenv复制到新创建的名为myclone的环境中。

m0rkklqb

m0rkklqb6#

下面是我克隆python虚拟环境的go to命令。

packs=`source-path/bin/pip freeze` && python3 -m venv <env-name> && target-path/bin/pip install $packs

上述命令中使用的约定:

  • source-path =要克隆的env的路径,例如/home/john/envs/oldenv
  • env-name =克隆环境的名称,例如myenv,它也可以是路径,例如/home/john/envs/myenv
  • target-path =新克隆环境的路径,例如/home/john/envs/<env-name>

使用这个的优点或为什么我更喜欢这个
1.无需生成requirements.txt文件。
1.克隆过程中未激活/停用任何环境。
1.要执行的单个命令(一次运行3个命令)。
在某些情况下,您可能希望在克隆env时从中排除全局软件包,可以将source-path/bin/pip freeze替换为source-path/bin/pip freeze --local,更多关于--localhere的信息

deyfvvtc

deyfvvtc7#

如果你使用pip“venv”,我复制粘贴了保存虚拟环境的文件夹,并手动更改了复制文件夹的bin文件夹中的文件。我不知道它是否有效,但它工作!

pxiryf3j

pxiryf3j8#

你不能简单地:

  • 将现有虚拟env目录复制到新目录
  • 更新到新的Django?
iklwldmw

iklwldmw9#

pip工作,但这是一个问题在一台计算机没有互联网.
我为此写了一个小代码,它对我很有用。我把它写在这里是因为它可能对其他人有用。
(注:我在Windows上测试过)
1.复制项目文件夹
1.粘贴项目文件夹到另一个目录
1.更改此代码中的地址部分,然后运行以下代码:

import os

# The new address of our script folder
script_folder = r'D:\Python proqrams\pdf_to_excel\venv\Scripts'

# the old address of our venv folder
old_path = rb'C:\Users\AVG-dell\Desktop\pdf_to_excel\venv'

# the new address of our venv folder
new_path = rb"D:\Python proqrams\pdf_to_excel\venv"

def find_replace( folder ):

    names = os.listdir( folder )

    for name in names:
        current_path = os.path.join( folder, name )

        if os.path.isdir( current_path ):
            find_replace( current_path )

        elif os.path.isfile( current_path ) :

            try:
                with open( current_path ,'rb' ) as f:
                    data = f.read()

                if old_path in data:
                    print( current_path )

                    data2 = data.replace( old_path , new_path )

                    with open( current_path , 'wb' ) as f:
                        f.write(data2)

            except:
                pass


find_replace( script_folder )

print('completed')

相关问题