我知道brew-gem和brew-pip但还是很容易混淆。假设我的 Mac OS X 是 10.7.2。
- 据我所知,Python 模块至少有 3 个位置(假设 2.7):
- /系统/库/框架/Python.framework/版本/2.7/
- /库/Python/2.7/站点包
- /usr/local/lib/python2.7/site-packages/(在 homebrew 内控制)
- 对于某些 Python 模块,点子将它们安装到2,即所谓的本地/自定义 Python 模块位置,一切看起来都很好,运行也很好。例如,阅读行经过简易安装(伊帕特里克建议我安装阅读行经过简易安装代替点子)
- 对于某些程序,它会尝试将一些杂项文件(例如,man、doc 等)安装到系统范围的位置,这需要须藤! 前任,伊帕特里克坚持安装男人和文档进入/系统/库/框架/Python.framework/版本/2.7/共享/,这违反了权限问题,我所能做的就是使用须藤。
- 对于通过以下方式安装的一些 Python 模块酿造,它们符号链接到/usr/local/lib/python2.7/站点包/。一切似乎都很好,只是你必须记住将此位置添加到python 路径。
我想知道是否有任何建议的、统一的方法来处理这些问题,或者有任何解释可以让这些问题变得清晰明了。
答案1
也许是时候考虑使用虚拟环境。Virtualenv 使用您指定的 Python 版本创建自包含的 Python 环境。激活新的虚拟环境后,您使用 pip 安装的所有内容都会进入该环境。这有助于避免您描述的情况。
例如,使用默认的 python 创建并激活一个新的 python 环境:
# create environment
$ virtualenv --distribute myproject
New python executable in myproject/bin/python
Installing distribute...done.
Installing pip...done.
# activate environment
$ . ./myproject/bin/activate
# check default python
(myproject)$ which python
/Users/me/myproject/bin/python
建议使用--distribute
选项来指示在新环境中应使用分发来安装软件包,而不是(较旧的)setuptools。激活后,您的命令提示符将更改为指示哪个 python 环境处于活动状态。
现在安装一些包。文件将进入 myproject 目录:
# install django
(myproject)$ pip install django
...
# search for django dir
(myproject)$ find myproject -iname django
myproject/lib/python2.7/site-packages/django
最后,停用:
# deactivate and check for default python
(myproject)$ deactivate
$ which python
/usr/bin/python
要使用非默认版本的 Python 创建环境:
$ virtualenv --distribute -p /path/to/custom/python mynewproject
默认情况下,virtualenv 会将您用于引导它的 Python 版本安装的所有软件包复制到新环境中。要防止这种情况并创建一个空环境,请使用该--no-site-packages
选项。这对于创建可以精确复制的环境(例如从开发到生产)特别有用。
更新:从 1.7 版本开始--no-site-packages
已成为 virtualenv 的默认行为。
如果你想要了解更多详细信息,网上有很多教程和博客文章。例如:
- 关于在 Django 中使用 pip 和 virtualenv 的注释。(该帖子的大部分内容与 Django 无关)
- 使用虚拟环境。
尝试一下吧,我相信你会坚持下去。
笔记:确保您的可执行脚本没有硬编码 Python 解释器。即,它们的第一行应该是#!/usr/bin/env python
而不是类似这样的内容#!/usr/bin/python
。
答案2
我的建议:
通过以下方式安装 xcode 命令行工具包 Xcode -> 偏好设置 -> 下载 -> 组件:
安装 homebrew(升级你的路径
.profile
,.SHELLrc
或任何包含的内容/usr/local/bin
前系统默认的就行/usr/bin
)。对于 python,首先自行安装所有先决条件:
brew install readline sqlite gdbm pkg-config
brew install python --framework --universal
- 更新你的路径以便它使用正确的 distutils:
export PATH=/usr/local/share/python:$PATH
easy_install pip
pip install virtualenv
pip install virtualenvwrapper
- 包括
export PYTHONPATH=/usr/local/lib/python:$PYTHONPATH