我刚刚使用 Homebrew 安装了 Python。我使用了命令brew install python
(在安装 XQuartz 之后,这是一个先决条件)。
这个页面 - https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python - 告诉我以下内容:
问题
假设一个标准的 Homebrew 安装,前缀是
/usr/local
,酒窖是/usr/local/Cellar
.Homebrew 使用标准的
./configure --prefix=#{prefix}
.这设置:
- “站点包”文件夹为
/usr/local/Cellar/python/2.7.3/lib/python2.7/site-packages
.- “安装脚本”文件夹为
/usr/local/Cellar/python/2.7.3/bin
.如果 site-packages 存在于 Python 的 Cellar 中,那么用户安装的包将在 Python 更新之间被擦除。install-scripts 也一样,另外一个问题是用户必须手动将 Python 的地窖 bin 文件夹添加到路径中。
解决方案
Homebrew 在安装时执行两个操作来解决这些问题。
/usr/local/lib/python2.7/site-packages
首先,删除 Cellar site-packages 文件夹,并在前缀中创建符号链接 。这将允许站点包在 Python 更新之间持续存在,因为 Homebrew 对某些使用 lib 作为用户可安装库的语言进行了特殊处理。其次,
distutils.cfg
编写一个文件以将 install-scripts 文件夹设置为/usr/local/share/python
. 用户可以添加/usr/local/share/python
到PATH
以获取已安装的脚本。
我不明白的是“删除了地窖站点包文件夹,并
/usr/local/lib/python2.7/site-packages
创建了指向前缀中的符号链接”的行。当我查看“前缀”时——我理解为“/usr/local”——我没有看到符号链接。这个符号链接在哪里被引用?
我感到困惑的原因之一是,当我运行时,pip install virtualenvwrapper
我得到的输出告诉我:“要求已经满足:/Library/Python/2.7/site-packages 中的 virtualenv-clone(来自 virtualenvwrapper)”。我不明白这个/Library/Python/2.7/site-packages
目录是从哪里来的,为什么会被引用。
话虽如此,pip install virtualenvwrapper
似乎完成没有问题并且不需要 sudo,我认为这应该是使用 Homebrew 安装的优势之一。的整个输出pip install virtualenvwrapper
是:
下载/解压 virtualenvwrapper 为包 virtualenvwrapper 运行 setup.py egg_info 下载/解压 virtualenv(来自 virtualenvwrapper) 下载 virtualenv-1.8.2.tar.gz (2.2MB):下载了 2.2MB 将下载存储在 ./Library/Caches/pip-downloads/http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fv%2Fvirtualenv%2Fvirtualenv-1.8.2.tar.gz 的缓存中 为包 virtualenv 运行 setup.py egg_info 警告:在目录“docs/_templates”下找不到与“*”匹配的先前包含的文件 警告:在目录“docs/_build”下找不到与“*”匹配的先前包含的文件 已满足要求(使用 --upgrade 升级):/Library/Python/2.7/site-packages 中的 virtualenv-clone(来自 virtualenvwrapper) 已满足要求(使用 --upgrade 升级):/Library/Python/2.7/site-packages 中的 stevedore(来自 virtualenvwrapper) 已满足要求(使用 --upgrade 升级):分发在 /usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg (来自 stevedore->virtualenvwrapper) 安装收集的包:virtualenvwrapper、virtualenv 为 virtualenvwrapper 运行 setup.py install 跳过/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/virtualenvwrapper/__init__.py(命名空间包)的安装 安装 /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/virtualenvwrapper-3.6-py2.7-nspkg.pth 将 /usr/local/share/python/virtualenvwrapper.sh 的模式更改为 755 将 /usr/local/share/python/virtualenvwrapper_lazy.sh 的模式更改为 755 为 virtualenv 运行 setup.py install 警告:在目录“docs/_templates”下找不到与“*”匹配的先前包含的文件 警告:在目录“docs/_build”下找不到与“*”匹配的先前包含的文件 将 virtualenv 脚本安装到 /usr/local/share/python 将 virtualenv-2.7 脚本安装到 /usr/local/share/python 成功安装 virtualenvwrapper virtualenv 打扫干净...