我在Mac OS X上使用Python3。一切都很完美,我曾经安装过这样的软件包:
pip install somePackage
但是IDLE停止工作了,所以我不得不重新安装它。在那之后,当我运行pip时,pip is not defined
我必须安装pip。现在,每次我尝试使用pip安装软件包时,都会出现此错误:
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run
prefix=options.prefix_path,
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 784, in install
**kwargs
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 377, in move_wheel_files
clobber(source, dest, False, fixer=fixer, filter=filter)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/wheel.py", line 287, in clobber
ensure_dir(dest) # common for the 'include' path
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/utils/__init__.py", line 83, in ensure_dir
os.makedirs(path)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 1] Operation not permitted: '/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/pygame'
我以为可能是从版本开始的,所以我更新了它。现在,每当我运行时,都会出现pip install something
此错误:
命令“ / usr / bin / python -u -c”导入设置工具,标记化;文件='/ private / var / folders / bc / hwpn9sqn5352xcbst0p89snm0000gn / T / pip-build-hSNyxK / termcolor / setup.py'; f = getattr(tokenize,'open',open)(file); code = f.read ().replace('\ r \ n','\ n'); f.close(); exec(compile(code,file,'exec'))“安装--record / var / folders / bc / hwpn9sqn5352xcbst0p89snm0000gn /T/pip-U3ZtNq-record/install-record.txt-“单一版本-外部管理-编译”失败,错误代码为/ private / var / folders / bc / hwpn9sqn5352xcbst0p89snm0000gn / T / pip-build- hSNyxK / termcolor /
我什至无法删除软件包-运行时出现pip uninstall something
此错误:
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/uninstall.py", line 76, in run
requirement_set.uninstall(auto_confirm=options.yes)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 346, in uninstall
req.uninstall(auto_confirm=auto_confirm)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 754, in uninstall
paths_to_remove.remove(auto_confirm)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/utils/__init__.py", line 267, in renames
shutil.move(old, new)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
copy2(src, real_dst)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
copystat(src, dst)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/var/folders/bc/hwpn9sqn5352xcbst0p89snm0000gn/T/pip-OQKY_a-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy-1.8.0rc1-py2.7.egg-info'
我的点子版本是:
pip 9.0.1 from /Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg (python 2.7)
我正在使用Mac 10.12.6
我怎样才能解决这个问题?
您看到的权限错误是由于您的site-packages
目录(尝试将pip安装到的目录)受管理员保护和拥有的。
这取决于您的Python发行版。这就是为什么我要您包括$ which python
命令(从命令行)和>>> import site; site.getsitepackages()
命令(从Python)的输出。这些将帮助您弄清楚站点包目录的位置。同样,运行pip -v
将打印pip尝试安装到的目录。
请务必注意,Mac随附Python的系统版本。您不应该安装此系统版本的Python可访问的任何软件包,因为它已被系统使用,并且有可能干扰其正常运行和/或安装恶意版本的软件包,这些版本的恶意软件会在系统使用该Python时造成不良后果(例如,如果有人制作了一个讨厌的鸡蛋并将其命名为“ os”,并将其放在系统Python的site-packages目录中,则下一次系统python版本运行“ import os”时,它将导入讨厌的鸡蛋。)
sudo pip install
不是一个好的解决方案虽然pip install
以sudo运行命令可能会解决问题,但这是一个短期修复,由于我在@Nenand的答案中的评论中提到的原因,这是非常糟糕的-运行pip install X
从互联网上下载X的鸡蛋,然后python setup.py build && python setup.py install
在发生任何情况下运行在setup.py
。尽管很容易沾沾自喜,因为,嘿,它起作用了!但是,在互联网上信任陌生人也很天真(让我们面对现实,制作pip包的人对您来说是陌生人)。
编辑:我什至没有想到这一点,但也有可能您错误地键入了一个库,或猜测了错误的名称,并最终得到了一个您真的不想要的(打错字)。请参阅有关欺骗性pip软件包的BleepingComputer文章。
正确的解决方案是弄清楚为什么您的site-packages
目录受到保护,并修复其权限或更改site-packages
pip使用的目录。
我怀疑您看到此权限错误的原因是pip试图安装到系统Python的site-packages
目录,该目录归root所有,这是有充分理由的。系统Python位于,/usr/bin/
其site-packages
目录位于以下目录:
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages'
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python'
'/Library/Python/2.7/site-packages'
在这种情况下,我的建议是使用Homebrew,Python.org或Canopy安装Python,这将使您的蛇保持在单独的笼子中,而将系统Python保留下来。在我的系统上,python
是系统python,python2
是Python版本2,python3
也是Python版本3。这也使我更清楚使用的是哪个版本。我也没有pip
命令-不在我的路径上-所以我不能不小心将某些东西安装到我的系统Python中。我必须明确致电pip2
或pip3
。使用Homebrew Python将为您完成所有这些工作,因此,这是许多可用Python发行版中我最喜欢的建议。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句