代码之家  ›  专栏  ›  技术社区  ›  Matthew Rankin val

向多个virtualenv添加共享python包

  •  9
  • Matthew Rankin val  · 技术社区  · 14 年前

    当前Python工作流

    pip , distribute , virtualenv virtualenvwrapper 安装到我的Python2.7站点包中(a) framework Python install on Mac OS X ~/.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中。因此,我想知道:

    • 有没有对这个工作流的修改,允许我通过让多个virtualenv引用一个Python包来节省磁盘空间 安装在我的Python2.7站点包中?

    我试过用 add2virtualenv 这是virtualnvwrapper的一部分。虽然这“将指定的目录添加到当前活动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 作品?
    • 有没有比add2virtualenv更好的方法允许多个virtualenv引用一个 安装在我的Python2.7站点包中?
    • 问题3
    • 问题4
    1 回复  |  直到 14 年前
        1
  •  11
  •   Brandon Rhodes    14 年前

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

    所以我想这就是我从自己的经历中学到的教训:你永远不会注意到你丢失的磁盘空间,但是你 请注意,如果试图清理磁盘上某个地方的目录会破坏其他地方正在开发的项目。