【问题标题】:Virtualenv: global site-packages vs the site-packages in the virtual environmentVirtualenv:全局站点包与虚拟环境中的站点包
【发布时间】:2009-12-07 14:35:10
【问题描述】:
  1. 如果我在全局站点包和本地站点包中都安装了某个包,将导入哪个包?这会起作用还是会出错?
  2. 我应该将哪些包放在全局站点包中,哪些放在本地包中?

【问题讨论】:

    标签: python virtualenv


    【解决方案1】:

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

    我看到的关于哪些包要全局放置的一般最佳实践:

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

    其次,将easy_install 或pip 安装到每个单独的virtualenv 中但不经常更改的软件包很痛苦——例如MySQLdb/psycopg 和PIL。

    几乎所有其他内容都应放入您的 virtualenv 的包中(我强烈建议使用 pip 要求文件和 virtualenvwrapper 以使这在其他机器上设置的痛苦最小且容易)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 新创建的虚拟环境默认可以访问全局站点包目录这不再是真的。
      猜你喜欢
      • 2020-01-09
      • 2017-07-19
      • 1970-01-01
      • 2015-11-16
      • 2018-05-21
      • 2013-08-01
      • 2012-08-18
      • 2014-01-24
      相关资源
      最近更新 更多