如何使用pyenv复制已创建的virtualenv虚拟环境?
克隆pyenv虚拟环境的推荐方法
由于pyenv官方没有提供pyenv virtualenv-copy命令,你可以通过以下两种方法实现需求:
方法一:直接复制虚拟环境目录(高效快捷)
这种方法直接复制原环境的文件,适合保留所有已安装包和配置,无需重新下载安装:
- 先停用当前激活的虚拟环境(如果已激活):
pyenv deactivate - 复制原虚拟环境的整个目录到新名称,pyenv的虚拟环境默认存储在
~/.pyenv/versions/路径下:cp -r ~/.pyenv/versions/myenv ~/.pyenv/versions/myenv-copy - (可选)修复环境内硬编码的路径:
部分脚本或配置文件可能会硬编码原环境名称,执行以下命令替换为新名称:sed -i.bak "s|myenv|myenv-copy|g" ~/.pyenv/versions/myenv-copy/bin/* rm ~/.pyenv/versions/myenv-copy/bin/*.bak - 激活新的虚拟环境:
pyenv activate myenv-copy
方法二:通过pip导出/重新安装依赖(干净可靠)
如果希望得到一个更“干净”的副本,或者担心直接复制可能出现路径问题,可以用pip导出依赖后重新构建环境:
- 激活原虚拟环境:
pyenv activate myenv - 将当前环境的所有依赖导出到文件:
pip freeze > requirements.txt - 停用原环境:
pyenv deactivate - 创建新的虚拟环境:
pyenv virtualenv myenv-copy - 激活新环境并安装依赖:
pyenv activate myenv-copy pip install -r requirements.txt
两种方法对比
- 直接复制:耗时短,完全保留原环境的所有配置和包,适合依赖安装耗时久的复杂环境。
- pip导出法:生成的环境更整洁,避免潜在的路径问题,但需要重新下载安装所有依赖,耗时较长。
内容的提问来源于stack exchange,提问作者mhucka
相关产品推荐
相关产品推荐

