- 如果我在全局站点包和本地站点包中都安装了某个包,将导入哪个包?这会起作用还是会出错?
- 我应该把哪些包放在全局站点包中,哪些放在本地包中?
问问题
3856 次
2 回答
9
上一个答案结束了问题 1,但忽略了问题 2。
我见过的在全球范围内放置哪些包的一般最佳实践:
首先,核心 Python 包,因为除非您升级主要版本,否则这些包不会因向后不兼容的问题而改变,并且您会希望 python 升级中的任何安全修复程序自动应用于您的 virtualenvs。
其次,easy_install 或 pip 安装到每个单独的 virtualenv 中但不会经常更改的软件包——例如 MySQLdb/psycopg 和 PIL。
几乎所有其他东西都应该放入您的 virtualenv 的包中(我强烈建议使用pip需求文件和virtualenvwrapper来使这在其他机器上设置的痛苦最小且容易)。
于 2009-12-07T17:56:11.607 回答
3
默认情况下,新创建的虚拟环境可以访问全局站点包目录,除非使用 --no-site-packages 创建。在激活某些环境的情况下调用 easy_install(安装新包)将导致本地覆盖全局站点包中已经存在的包(类似于继承)。环境将使用它自己的本地包,当缺少时 - 全局包。
于 2009-12-07T15:15:14.613 回答