PIP未安装到virtualenv目录


10

我正在尝试将django安装到已经存在的virtualenv中。

按照此处 pip-install网站上列出的说明,我从SSH运行了以下内容。

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

但是,在安装的底部,我看到了以下信息:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

似乎正在尝试将其安装到全局目录。我没有sudo特权。我在这里做错什么了吗?

更新:$ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games


它对于其他软件包是否正常工作?如果您使用同样的问题easy_install吗?
larsk's

其他软件包也有同样的问题。而且我相信easy_install需要sudo并将其安装到全局目录中。
卢克·萨潘

不会,设置virtualenv可以使easy_install和pip变得容易。您可以键入which easy_install以查看您使用的是virtualenv还是系统之一。
larsk's

实际上,您确定要从virtualenv内部运行pip吗?有什么which pip收获?你看到pip里面myenv.env/bin/吗?
larsk's

我确实在myenv.env / bin /中看到了点子。我只是尝试再次“激活”我的环境,尽管处于这种模式,“哪个pip”和“哪个easy_install”都分别返回“ usr / local / bin / pip”和“ usr / bin / easy_install”。
卢克·萨潘

Answers:


6

对不起,迟到了一年!我遇到了同样的问题,并已解决,但我不知道在创建虚拟环境后是否更改了目录的名称。如果是这样,那么这就是我所做的。

1.)deactivate您的v-env。修复之后,您需要重新启动v-env,所以deactivate现在也应该重新启动。对?

2.)现在,由于我们在其他路径中创建了v-env,因此我们必须更改这些文件中的静态路径变量。

要使点子正常工作,您不需要执行此操作,但是我仍然可以这样做。 bin/activatebin/activate.cshbin/activate.fish

bin/pipbin/pip2bin/pip2.7

bin/easy_installbin/easy_install2.7

3.)要使pip正常工作,您必须更正pip文件中的python解释器,并且在创建过程中还需要由virtualenv设置静态解释器位置。

4.)要使easy_install正常工作?您猜对了,请固定翻译器的位置。

我希望这对以后阅读此书的任何人有所帮助。抱歉,抱歉。


是的,就是这样。就我而言,我能够从头开始重新创建virtualenv,这就解决了它。
路加·萨潘

很高兴能帮助
脆皮

我很高兴终于找到答案。对我来说,在venv文件夹中使用sed使工作变得容易得多。有点像grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @来源
Keith

您说:“要使pip正常工作,必须在pip文件中更正python解释器”,这在哪里以及如何完成?
戴夫

3

我有同样的问题。

我删除了虚拟环境并创建了一个新的虚拟环境,从而解决了该问题。

可能不是您想要的答案,但是因为它是唯一的答案...


1

好吧,如果没有管理特权,您将只能做些有限的事情。如果您不被允许提升自己或寻求特权,那么我发现最好的方法是创建另一个环境,创建一个requirements.txt文件,将所需的所有软件包下载到您的计算机上(django)。也位于您的需求文件中,它应该可以工作。


0

有同样的问题。就我而言,原因是所创建的虚拟环境是针对python2.7(默认设置)的,但我使用的是pip3来安装软件包。pip3在我的virtualenv中不存在,因此默认为全局。对我来说,解决方法是使用

virtualenv flask --python=python3

创建环境。


0

我也遇到过由于用户重命名而引起的相同问题。脆皮的答案是完全正确的。我的解决方案可能更方便。

setps:
1.输入您的虚拟环境的bin路径,例如cd ~/virenv_dir/bin
2.使用sed命令重命名此目录下的所有文件。sed -i 's/old_name/new_name/' *


0

就我而言,我定义了两个别名(以克服默认python版本上的其他问题):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

这导致了相同的症状:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

删除别名解决了该问题(在创建virtualenv之前或之后)


0

呼叫sudo pip将呼叫全局点而不是您的virtualenv中的点。激活/在您的环境中工作,然后仅致电pip,而不是sudo pip,这可能会解决您的问题,就像它确实发生了一样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.