pip install -r:OSError:权限被拒绝
我正在尝试设置Django 。
当我运行pip install -r requirements.txt
,出现以下exception:
Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, django-bower, django-braces, django-celery, django-crispy-forms, django-debug-toolbar, django-disqus, django-embed-video, django-filter, django-merchant, django-pagination, django-payments, django-storages, django-vote, django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko Cleaning up... Exception: Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main status = self.run(options, args) File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run requirement_set.install(install_options, global_options, root=options.root_path) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install requirement.install(install_options, global_options, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install self.move_wheel_files(self.source_dir, root=root) File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files pycompile=self.pycompile, File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files clobber(source, lib_dir, True) File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber os.makedirs(destsubdir) File "/usr/lib/python2.7/os.py", line 157, in makedirs mkdir(name, mode) OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'
什么是错的,我该如何解决这个问题?
你用sudo试过了吗?
sudo pip install -r requirements.txt
人们真的需要停止build议与pip install
使用sudo
。 首先尝试pip install --user
更好。 如果这失败,那么看看这里的顶部post。
你不应该使用sudo
的原因如下:
当您使用sudo
运行pip时,您将以root用户身份从Internet运行任意Python代码,这是相当大的安全风险。 如果有人在PyPI上安装了一个恶意项目,并且安装了该项目,则攻击者可以访问您的计算机。
也许你不是根。
通常,您可以使用sudo
临时获取超级用户权限:
sudo pip install -r requirements.txt
在这里find更多关于sudo
信息
如果您不想进行系统级的更改 (而且第二个伯特的回答是说您可能不需要),请按照以下指南进行操作: 如何使用pip在我的$ HOME文件夹中安装软件包? 。
TL; DR:
pip install --user runloop requirements.txt
你也可以使用virtualenv ,这对于开发环境来说可能是一个更好的解决scheme,特别是在你正在处理多个项目并且要跟踪每个依赖关系时。
只是澄清什么在Linux(基于Ubuntu的)许可证上的许多痛苦之后为我工作的权限拒绝错误,并利用伯特的答案上面,我现在使用…
$ pip install --user <package-name>
或者如果在需求文件上运行pip …
$ pip install --user -r requirements.txt
并且这些工作可靠地用于每个点安装,包括创build虚拟环境。
然而, 在我的进一步体验中最干净的解决scheme是安装python-virtualenv
和virtualenvwrapper
,并在系统级别sudo apt-get install
。
然后,在虚拟环境中,使用没有--user
标志的pip install
而没有sudo
。 更清洁,更安全,更容易整体。
用户对某些Python安装path没有写入权限。 您可以通过以下方式授予权限:
sudo chown -R $USER /absolute/path/to/directory
所以你应该给予权限,然后尝试再次安装它,如果你有新的path,你也应该给予权限:
sudo chown -R $USER /usr/local/lib/python2.7/