问题 Pip不会将软件包安装到激活的virtualenv,忽略requirements.txt


我正在尝试在家里的新开发机器上设置开发环境。我刚刚安装了Ubuntu,现在我正在尝试从我们的Web服务器克隆远程仓库并安装其依赖项,以便我可以开始工作。

到目前为止我已手动安装 virtualenv 和 virtualenvwrapper 来自pypi并编辑我的bash.rc,以便在我启动终端时获取我的virtualenvs。然后我克隆了我的回购 ~/projects/project-name/websitename.com。然后我用了 virtualenvwrapper 至 mkvirtualenv env-name 从 ~/projects/project-name/websitename.com。这恰好反映了 file-structure/setup 我正在克隆的网络服务器。到现在为止还挺好。

我登录了开发服务器并激活了 virtualenv 在那里使用 pip freeze -l > req.txt 将依赖项列表和scp呈现给我的本地计算机。我激活了 virtualenv 在我的本地机器上,导航到 ~/projects/project-name/websitename.com 并执行 pip install -r path-to-req.txt 它会遍历所有依赖项,就好像没有错。但是,当我尝试 manage.py syncdb 我得到一个关于没有找到核心django包的错误。我勒个去?所以我想知道Django无法安装,我 run pip install Django==1.5.1 它成功完成。我必须再次设置我的网站,并获得另一个没有命名模块的错误 django_extensions。好吧,到底是怎么回事,我刚用pip安装了所有这些软件包?!

所以我 pip freeze -l > test.txt 和 cat test.txt,它列出了什么? Django==1.5.1,我刚刚手动安装的一个包。为什么不将我的依赖项从我的指定列表安装到我的virtualenv?我在这里搞砸了什么?

-编辑 - - - - - - -

哪个点子给了我在我的virtualenv pip的路径

我只有1个virtualenv,它被激活


7519
2017-09-03 23:57


起源

你正在做的一切似乎都可以,尝试调试 which pip。 - elyase
也试试 find ~/.virtualenvs -type d -iname "anypackage" 查看是否安装了所需的软件包。我也推荐使用 https://gist.github.com/insin/1425703 这会给你的bash中激活的virtualenv提供很好的提示。 - sagarchalise
运行你的命令,我的virtualenv中唯一的包是我手动要求pip安装Django的包,所有其他由pip在需求文件中处理的包都被忽略了。我也以某种方式得到了一个很好的提示,表明我已激活哪个virtualenv。 - leotemp
我只能建议通过 pip install -r 再次查看某个特定包中是否发生任何错误。你好像做的一切都好。 - sagarchalise
@sagarchalis好的,我会尽快尝试。正如你所说,某些事情必定会失败。 - leotemp


答案:


我通常的工作流程是

pip freeze > someFile.txt

然后安装

pip install -r someFile.txt

所以我确定这应该可行。不幸的是,除了确保检查之外,我无法告诉你任何事情

  1. 你真的处在你认为自己所处的虚拟世界中。确保自己运行

    workon yourVirtualEnvName
    

    在重要的情况下激活它。

  2. 一定要检查pip是否在你的virtualenv中。

    which pip
    

    给我

    /path/to/home/.virtualenvs/myVirtEnv/bin/pip
    

对不起,我不能给你一个更具体的答案。我必须半定期地执行此操作,并且我从未遇到过跳过依赖项的问题。祝你好运!


6
2017-09-04 00:12



嗯,是的,我正在运行pip install -r someFile.txt,我甚至看着它说它正在下载和安装,但随后包不存在。例如它说:下载/解压缩django-extensions == 1.1.1(来自-r req.txt(第14行))下载django-extensions-1.1.1.tar.gz(149kB):149kB已下载运行setup.py egg_info for package django-extensions。但是django-extensions似乎没有安装,并且在调用时仍然会导致错误。当我冻结时它也不会出现.. - leotemp
你提交了解决方案吗?我现在正在遇到一模一样的问题。 - ajay


不久前,我对这个问题的一些变化感到挣扎;它最终变得杂乱无章 .bash_profile 文件。

确保你没有任何东西可能会弄乱你的虚拟内容 .bash_profile/.bashrc, 如 $VIRTUAL_ENV 要么 $PYTHONHOME 要么 $PYTHONPATH 环境变量。


3
2017-09-16 13:14





我知道这是一个老帖子,但我刚遇到类似的问题。在我的情况下,原因是我正在运行 pip install 命令使用 sudo。这使得命令全局运行,并且包安装在全局python路径中。

希望能帮到别人。


2
2017-10-03 18:18