【问题标题】:Adding shared python packages to multiple virtualenvs将共享 python 包添加到多个 virtualenvs
【发布时间】:2011-04-11 04:40:31
【问题描述】:

当前 Python 工作流程

我的 Python 2.7 站点包(framework Python install on Mac OS X)中安装了 pipdistributevirtualenvvirtualenvwrapper。在我的~/.bash_profile 我有这条线

export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache

这给出了如下的工作流程:

$ mkvirtualenv pip-test
$ pip install nose        # downloaded and installed from PyPi
$ pip install mock        # downloaded and installed from PyPi
$ mkvirtualenv pip-test2
$ pip install nose        # installed from pip's download cache
$ pip install mock        # installed from pip's download cache

问题

由于我没有下载以前安装在另一个 virtualenv 中的软件包,因此此工作流程可以节省时间和带宽。但是,它不会节省磁盘空间,因为每个包都将安装到每个 virtualenv 中。因此,我想知道:

  • 问题 #1 是否对此工作流程进行了修改,让我可以通过让多个 virtualenvs 引用一个 安装在我的 Python 2.7 站点中的 Python 包来节省磁盘空间 -包?

我尝试过使用 add2virtualenv,它是 virtualenvwrapper 的一部分。虽然这“将指定目录添加到当前活动 virtualenv 的 Python 路径”,但它不会添加在 virtualenv/bin 目录中找到的任何可执行文件。因此,以下将失败:

$ mkvirtualenv pip-test3
$ add2virtualenv ~/.virtualenvs/pip-test/lib/python2.7/site-packages/nose/
$ nosetests   # Fails since missing ~/.virtualenvs/pip-test3/bin/nosetests
  • 问题 #2 我是否遗漏了 add2virtualenv 的工作方式?
  • 问题 #1 改述是否有比 add2virtualenv 更好的方法允许多个 virtualenvs 引用我的 Python 2.7 站点包中安装的一个 Python 包?
  • 问题 #3 如果有一种方法可以将共享 Python 包安装到多个 virtualenv 中,与将 Python 包单独安装到每个 virtualenv 中相比,是否存在性能损失?
  • 问题 #4 我是否应该放弃节省磁盘空间并坚持当前的工作流程?

【问题讨论】:

    标签: python virtualenv pip virtualenvwrapper


    【解决方案1】:

    除非您在嵌入式系统上进行开发,否则我发现以这种方式追逐磁盘空间总是适得其反。我花了很长时间才意识到这一点,因为我是在一个非常大的硬盘驱动器大小只有几兆字节的时候长大的,而 RAM 以 K 为单位。但是今天,除非你受到非常特殊和不寻常的限制,否则好处让你的项目是正交的(你可以在项目之外的任何地方删除系统上的任何目录,并且它的 Python 包仍然存在)似乎总是远远超过磁盘空间的好处,如果你正忙于开发,你会从来没有——根据我的经验——无论如何都不会注意到。

    所以我想这是我从我自己的经验中提供的教训:你永远不会注意到你丢失的磁盘空间,但是如果你试图清理一个目录,你注意到它在您磁盘上的一个地方中断了其他地方正在开发的项目。

    【讨论】:

    • 好主意。使用 pip 下载缓存非常值得,尤其是在无法访问 PyPi 的飞机上。但是,您的 cmets 让我认为,虽然节省带宽是值得的,但试图找到一种节省磁盘空间的方法是不值得的。再次感谢。
    • @Matthew — 是的,节省带宽非常很有用,因为这不仅可以节省网络资源,而且更重要的是节省时间,最终,确实限制了开发人员。我经常在我指向pip 的每个项目中检查一个鸡蛋目录,这既可以避免我不得不等待网络下载,也意味着每次构建项目时我都会得到完全相同的结果。
    猜你喜欢
    • 1970-01-01
    • 2021-08-24
    • 2021-10-13
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2022-10-06
    • 2011-06-13
    • 2011-03-17
    相关资源
    最近更新 更多