Virtualenv:全局站点包与虚拟环境中的站点包

时间:2009-12-07 14:35:10

标签: python virtualenv

  1. 如果我在全局网站包和本地网站包中安装了某个软件包,哪个软件包将被导入?这甚至会起作用还是会出错?
  2. 我应该将哪些软件包放在全局网站包中,哪些软件包放在本地网站包中?

2 个答案:

答案 0 :(得分:9)

上一个答案结束了问题1,但忽略了问题2.

我见过的全局最佳实践:

首先,核心Python包,因为这些不会随着向后兼容的问题而改变,除非你升级主要版本,并且你会希望python升级中的任何安全修复程序自动应用到你的virtualenvs。

其次,easy_install或pip安装的软件包很容易安装到每个virtualenv中,但不会经常更改 - 例如,MySQLdb / psycopg和PIL。

其他所有内容都应该放入virtualenv的软件包中(我强烈建议使用pip需求文件和virtualenvwrapper,以便在其他计算机上轻松设置这些内容。

答案 1 :(得分:3)

默认情况下,新创建的虚拟环境可以访问全局site-packages目录,除非使用--no-site-packages创建。在激活某些环境的情况下调用easy_install(安装新软件包)将导致本地覆盖全局站点包中已存在的软件包(类似于继承)。当缺失时,环境将使用自己的本地软件包 - 全局软件包。