Macos pip安装——OS X下的用户错误(virtualenv无法修复)

Macos pip安装——OS X下的用户错误(virtualenv无法修复),macos,python-2.7,pip,Macos,Python 2.7,Pip,我曾经使用sudopip安装[…]安装Python2.7.6软件包,直到最近我认为这不是一个好主意,我应该使用:pip安装-user[…] 由于我使用的是MacOSX10.10.3,我的python模块已经安装到/Library/python/2.7/site-packages中。现在,启用了-user选项后,它们将被安装到:/Users/user/Library/Python/2.7/lib/Python/site-packages中 此后,我将包括pip/setuptools在内的所有软件包

我曾经使用sudopip安装[…]安装Python2.7.6软件包,直到最近我认为这不是一个好主意,我应该使用:pip安装-user[…]

由于我使用的是MacOSX10.10.3,我的python模块已经安装到/Library/python/2.7/site-packages中。现在,启用了-user选项后,它们将被安装到:/Users/user/Library/Python/2.7/lib/Python/site-packages中

此后,我将包括pip/setuptools在内的所有软件包都移动到此目的地,调整了$PYTHONPATH并将文件所有权更改为本地用户。我希望现在能够调用pip安装用户[…],一切都会顺利进行

不幸的是,情况并非如此。对于任何pip安装或pip安装-升级命令,我都会收到下面相同的错误。使用virtualenv时也是如此——同样的错误出现了,我不知道为什么

然而,当我使用sudopip install-user时,一切都很好,这就是为什么我认为它与我看不到的文件权限错误有关。这不是很好,因为新安装的包将位于正确的位置,但所有文件都归root所有

你知道我做错了什么或者如何调试吗

pip install --upgrade --user tornado
Collecting tornado
  Using cached tornado-4.1.tar.gz
Exception:
Traceback (most recent call last):
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/basecommand.py", line 223, in main
status = self.run(options, args)
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/commands/install.py", line 280, in run
requirement_set.prepare_files(finder)
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/req/req_set.py", line 317, in prepare_files
functools.partial(self._prepare_file, finder))
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/req/req_set.py", line 304, in _walk_req_to_install
more_reqs = handler(req_to_install)
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/req/req_set.py", line 483, in _prepare_file
abstract_dist.prep_for_dist()
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/req/req_set.py", line 123, in prep_for_dist
self.req_to_install.run_egg_info()
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/req/req_install.py", line 368, in run_egg_info
self.setup_py, self.name,
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/pip/req/req_install.py", line 339, in setup_py
import setuptools  # noqa
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/setuptools/__init__.py", line 11, in <module>
from setuptools.extension import Extension
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/setuptools/extension.py", line 8, in <module>
from .dist import _get_unpatched
  File "/Users/USER/Library/Python/2.7/lib/python/site-packages/setuptools/dist.py", line 21, in <module>
    packaging = pkg_resources.packaging
AttributeError: 'module' object has no attribute 'packaging'
我还检查了pkg_资源的位置并删除了pkg_resources.pyc,出于某种原因,它位于/usr/local/lib/python2.7/site-packages中,但没有改变任何内容。我的本地用户在此位置也具有完全访问权限

[更新:]
出于某种原因,我可以在没有root pip安装用户virtualenv的情况下安装virtualenv,但我尝试的所有其他软件包仍然失败。此外,如果切换到新的虚拟环境,我仍然会收到相同的错误。我现在认为这与我的$PYTHONPATH变量有关,它似乎没有针对我的virtualenv进行更新,但我还没有找到真正的解决方案。

好的,所以我找到了实际的问题和解决方案。我的$PYTHONPATH包含无效目录。很久以前,我设置了$PYTHONPATH,并将其写入.bashrc或更准确地说.bash_配置文件脚本

pip可能正在查看$PYTHONPATH中的所有目录,虽然我不知道每个目录中都有什么导致上述错误,但是删除无效目录修复了我的问题


我现在还强烈建议只使用virtualenv而不是静态设置。

我没有太多使用pip,但我希望它知道该软件包是在系统范围内安装的还是仅为用户安装的,这就是错误所在。解决方案是恢复原状,记录安装了哪些软件包,然后卸载并重新安装每个软件包。pip通过查看$PYTHONPATH知道安装了哪些软件包。它不知道这是系统范围的安装还是用户特定的安装。还原到根库文件夹不是一个解决方案,因为毫无疑问,您必须在那里使用sudo。要点是在安装新的python包时不要使用sudo。好的,我发现了这个问题,但我不同意公认的答案: