我正在尝试设置Django。
当我运行pip install -r requirements.txt
时,我得到以下异常:
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'
出了什么问题,如何解决这个问题?
答案 0 :(得分:290)
我们应该停止建议sudo
与pip install
一起使用。首先尝试pip install --user
会更好。如果此操作失败,请查看热门帖子here。
您不应该使用sudo
的原因如下:
当您使用sudo
运行pip时,您将以root用户身份从Internet运行任意Python代码,这是一个相当大的安全风险。如果有人在PyPI上设置恶意项目并进行安装,则会授予攻击者root权限。
答案 1 :(得分:54)
选项a)创建virtualenv,激活它并安装:
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
选项b)在homedir中安装:
pip install --user -r requirements.txt
我的建议使用安全(a)选项,因此该项目的要求不会干扰其他项目要求。
答案 2 :(得分:25)
只是澄清了在linux(基于ubuntu的)基于权限被拒绝错误的痛苦之后对我有用的东西,并且利用Bert的答案,我现在使用......
$ pip install --user <package-name>
或者如果在需求文件上运行pip ......
$ pip install --user -r requirements.txt
这些可以在每个pip安装中可靠地工作,包括创建虚拟环境。
但是,在我的进一步经验中,最简洁的解决方案 一直是在系统级安装python-virtualenv
和virtualenvwrapper
sudo apt-get install
。
然后,在虚拟环境中,使用pip install
而不使用--user
标记 AND 而不使用sudo
。整体更清洁,更安全,更容易。
答案 3 :(得分:24)
您正试图在系统范围的路径上安装软件包,而无权这样做。
通常,您可以使用sudo
暂时获取超级用户
权限由您负责,以便在系统范围的路径上安装软件包:
sudo pip install -r requirements.txt
详细了解sudo
here。
如果您不想进行系统范围的更改,可以使用--user
标记在每用户路径上安装该软件包。
所需要的只是:
pip install --user runloop requirements.txt
最后,对于更精细的控制,您还可以使用virtualenv,这可能是开发环境的优秀解决方案,尤其是在您正在开展工作时< strong>多个项目,并希望跟踪每个项目的依赖关系。
用
激活你的virtualenv后 $ my-virtualenv/bin/activate
以下命令将在virtualenv中安装软件包(并且在系统范围的路径上 not ):
pip install -r requirements.txt
答案 4 :(得分:6)
用户没有某些Python安装路径的写入权限。您可以通过以下方式授予许可:
sudo chown -R $USER /absolute/path/to/directory
所以你应该给予许可,然后尝试再次安装,如果你有新的路径,你也应该给予许可:
sudo chown -R $USER /usr/local/lib/python2.7/
答案 5 :(得分:0)
因此,由于完全不同的原因,我得到了相同的确切错误。由于Homebrew + pip bug是一个完全独立但已知的地方,因此我遵循了this workaround在Google Cloud的帮助文档中列出的内容,您可以在其主目录中创建一个.pydistutils.cfg文件。该文件具有特殊的配置,只应将其用于安装某些库。安装软件包后,我应该已经删除了该disutils.cfg文件,但是我忘记这样做了。所以对我来说,解决方法实际上只是...
rm ~/.pydistutils.cfg
。
然后一切正常。当然,如果确实有原因在该文件中有一些配置,那么您将不希望直接对该文件进行管理。但是,如果其他人做了那种解决方法,却忘了删除该文件,这对我来说就成功了!
答案 6 :(得分:0)
如果需要权限,则不能将'pip'与'sudo'一起使用。 您可以做一个技巧,以便可以使用“ sudo”并安装软件包。只需将“ sudo python -m ...”放在您的pip命令前面即可。
sudo python -m pip install --user -r package_name
答案 7 :(得分:-1)
这是应有的权限问题,
sudo chown -R $USER /path to your python installed directory
/usr/local/lib/python2.7/
或尝试
pip install --user -r package_name
然后说pip install -r requirements.txt
,它将安装在您的环境中
不要说sudo pip install -r requirements.txt
,它将安装到任意python路径中。
答案 8 :(得分:-2)
在虚拟环境中执行chmod -0777 -R
并运行pip install -r requirements.txt