从另一个virtualenv创建virtualenv

Lau*_*RTE 8 python virtualenv

我们可以从现有的virtualenv 创建virtualenv以继承已安装的库吗?

详细地:

我首先创建一个"引用"virtualenv,并添加库(修复版本):

virtualenv ref
source ref/bin/activate
pip install -U pip==8.1.1     # <- I want to fix the version number
pip install -U wheel==0.29.0  # <- I want to fix the version number
Run Code Online (Sandbox Code Playgroud)

然后:

virtualenv -p ref/bin/python myapp
source myapp/bin/activate
pip list
Run Code Online (Sandbox Code Playgroud)

我明白了:

pip (1.4.1)
setuptools (0.9.8)
wsgiref (0.1.2)
Run Code Online (Sandbox Code Playgroud)

如何获取我安装的库?

类似的问题

我看到了一个类似的问题:virtualenv可以继承另一个吗?.

但我想要一个孤立的virtualenv,它不使用引用的virtualenv,除了库安装.因此,将指定的目录添加到当前活动的virtualenv的Python路径中,不是解决方案.

为什么这样做?

好吧,我们有一个集成服务器来构建应用程序(用于发布和持续集成),我们希望保持对库版本的控制并使构建更快.

创建一个可重定位的virtualenv

我想我可以使用一个可重定位的virtualenv,就这样:

  1. 创建ref virtualenv
  2. 让它可重新定位:``virtualenv --relocatable ref```

对于"myapp":

  • ref复制到myapp

您如何看待这个解决方案?对于可分发的版本是否可靠?

dcm*_*m88 5

您可以使用.pth文件解决问题.基本上你这样做:

virtualenv -p ref/bin/python myapp
realpath ref/lib/python3.6/site-packages > myapp/lib/python3.6/site-packages/base_venv.pth
Run Code Online (Sandbox Code Playgroud)

执行此操作并激活后myapp,如果您运行,pip list您应该也可以看到所有包ref.请注意,安装的任何软件包myapp都会隐藏相应的软件包ref.


Fra*_*aro 0

当您安装第二个 virtualenv 时,您必须添加--system-site-packages标志。

virtualenv -p ref/bin/python myapp --system-site-packages
Run Code Online (Sandbox Code Playgroud)

  • ``--system-site-packages`` 安装系统 Python 的库,而不是引用的 virtualenv 的库。 (2认同)