在 Homebrew Python 2.7 安装中升级 pip 的问题
Problems with upgrading pip in Homebrew Python 2.7 installation
我在 Mac 上使用 Homebrew 安装了 Python 2.7.9,并且 Homebrew 还安装了 pip。我的 Mac.
上默认安装了一个未使用的旧版本 Python
问题是当我尝试升级 pip(使用 pip install --upgrade pip
)时,pip 似乎想要升级旧的默认版本 Python 附带的 pip 版本。这是发生的事情(在全新安装 Python 2.7.9 之后,即 brew remove python
后跟 brew install python
):
$ pip -V
pip 6.0.7 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg (python 2.7)
以上似乎是正确的。但是,会发生以下情况:
$ pip install --upgrade pip
You are using pip version 6.0.7, however version 6.0.8 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-6.0.8-py2.py3-none-any.whl#md5=41e73fae2c86ba2270ff51c1d86f7e09
Using cached pip-6.0.8-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 6.0.7
Uninstalling pip-6.0.7:
Successfully uninstalled pip-6.0.7
Successfully installed pip-1.4.1
为什么要安装 pip 1.4.1?现在我得到:
$ pip -V
pip 1.4.1 from /Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg (python 2.7)
这似乎对应于 Python 的旧默认版本。当我再次尝试升级时,它失败了:
$ pip install --upgrade pip
Downloading/unpacking pip from https://pypi.python.org/packages/source/p/pip/pip-6.0.8.tar.gz#md5=2332e6f97e75ded3bddde0ced01dbda3
Downloading pip-6.0.8.tar.gz (1.2MB): 1.2MB downloaded
Running setup.py egg_info for package pip
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Installing collected packages: pip
Found existing installation: pip 1.4.1
Uninstalling pip:
Cleaning up...
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/basecommand.py", line 134, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/commands/install.py", line 241, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 1294, in install
requirement.uninstall(auto_confirm=True)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 525, in uninstall
paths_to_remove.remove(auto_confirm)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 1639, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/util.py", line 294, in renames
shutil.move(old, new)
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 300, in move
rmtree(src)
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 252, in rmtree
onerror(os.remove, fullname, sys.exc_info())
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 250, in rmtree
os.remove(fullname)
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/EGG-INFO/dependency_links.txt'
Storing complete log in /Users/[me]/.pip/pip.log
但是,pip 可以正确安装到 /usr/local/lib/python2.7/site-packages
(Homebrew 提供的版本),而且我在使用 pip 安装模块和使用模块方面没有明显的问题。这是 which
的输出,完成上述所有操作后:
$ which pip
/usr/local/bin/pip
$ which python
/usr/local/bin/python
这是怎么回事?任何帮助将不胜感激。
我认为这与此处描述的问题相同:https://github.com/pypa/pip/issues/2319
这是由于sys.path中有另一个pip egg时pip行为异常造成的。
最简单的解决方法是保持 运行 sudo python -m pip uninstall pip
直到停止工作,然后 brew postinstall python
(重新安装 pip)。
我也有这个问题(Yosemite 上的 Homebrew Python 2.7.9)。我 运行 尝试做 pip install virtualenv
:
> which pip2.7
/usr/local/bin/pip2.7
> which python
/usr/local/bin/python
> pip install virtualenv
Requirement already satisfied (use --upgrade to upgrade): virtualenv in /Library/Python/2.7/site-packages
> pip install --upgrade virtualenv
..
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv-1.11.5-py2.7.egg-info/dependency_links.txt'
我通过暂时隐藏/Library/Python/2.7/site-packages
中的文件解决了这个问题。完成后将它们移回去。
> pip install virtualenv
Collecting virtualenv
Using cached virtualenv-12.0.7-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-12.0.7
> which virtualenv
/usr/local/bin/virtualenv
>
它也能正常工作。我在 virtualenv 中安装了 2.7.9,可以安装 numpy
、matplotlib
、scipy
,并且它们可以工作。
我在 Mac 上使用 Homebrew 安装了 Python 2.7.9,并且 Homebrew 还安装了 pip。我的 Mac.
上默认安装了一个未使用的旧版本 Python问题是当我尝试升级 pip(使用 pip install --upgrade pip
)时,pip 似乎想要升级旧的默认版本 Python 附带的 pip 版本。这是发生的事情(在全新安装 Python 2.7.9 之后,即 brew remove python
后跟 brew install python
):
$ pip -V
pip 6.0.7 from /usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-6.0.7-py2.7.egg (python 2.7)
以上似乎是正确的。但是,会发生以下情况:
$ pip install --upgrade pip
You are using pip version 6.0.7, however version 6.0.8 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-6.0.8-py2.py3-none-any.whl#md5=41e73fae2c86ba2270ff51c1d86f7e09
Using cached pip-6.0.8-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 6.0.7
Uninstalling pip-6.0.7:
Successfully uninstalled pip-6.0.7
Successfully installed pip-1.4.1
为什么要安装 pip 1.4.1?现在我得到:
$ pip -V
pip 1.4.1 from /Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg (python 2.7)
这似乎对应于 Python 的旧默认版本。当我再次尝试升级时,它失败了:
$ pip install --upgrade pip
Downloading/unpacking pip from https://pypi.python.org/packages/source/p/pip/pip-6.0.8.tar.gz#md5=2332e6f97e75ded3bddde0ced01dbda3
Downloading pip-6.0.8.tar.gz (1.2MB): 1.2MB downloaded
Running setup.py egg_info for package pip
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Installing collected packages: pip
Found existing installation: pip 1.4.1
Uninstalling pip:
Cleaning up...
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/basecommand.py", line 134, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/commands/install.py", line 241, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 1294, in install
requirement.uninstall(auto_confirm=True)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 525, in uninstall
paths_to_remove.remove(auto_confirm)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 1639, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/util.py", line 294, in renames
shutil.move(old, new)
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 300, in move
rmtree(src)
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 247, in rmtree
rmtree(fullname, ignore_errors, onerror)
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 252, in rmtree
onerror(os.remove, fullname, sys.exc_info())
File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 250, in rmtree
os.remove(fullname)
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/EGG-INFO/dependency_links.txt'
Storing complete log in /Users/[me]/.pip/pip.log
但是,pip 可以正确安装到 /usr/local/lib/python2.7/site-packages
(Homebrew 提供的版本),而且我在使用 pip 安装模块和使用模块方面没有明显的问题。这是 which
的输出,完成上述所有操作后:
$ which pip
/usr/local/bin/pip
$ which python
/usr/local/bin/python
这是怎么回事?任何帮助将不胜感激。
我认为这与此处描述的问题相同:https://github.com/pypa/pip/issues/2319
这是由于sys.path中有另一个pip egg时pip行为异常造成的。
最简单的解决方法是保持 运行 sudo python -m pip uninstall pip
直到停止工作,然后 brew postinstall python
(重新安装 pip)。
我也有这个问题(Yosemite 上的 Homebrew Python 2.7.9)。我 运行 尝试做 pip install virtualenv
:
> which pip2.7
/usr/local/bin/pip2.7
> which python
/usr/local/bin/python
> pip install virtualenv
Requirement already satisfied (use --upgrade to upgrade): virtualenv in /Library/Python/2.7/site-packages
> pip install --upgrade virtualenv
..
OSError: [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/virtualenv-1.11.5-py2.7.egg-info/dependency_links.txt'
我通过暂时隐藏/Library/Python/2.7/site-packages
中的文件解决了这个问题。完成后将它们移回去。
> pip install virtualenv
Collecting virtualenv
Using cached virtualenv-12.0.7-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-12.0.7
> which virtualenv
/usr/local/bin/virtualenv
>
它也能正常工作。我在 virtualenv 中安装了 2.7.9,可以安装 numpy
、matplotlib
、scipy
,并且它们可以工作。