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

时间:2013-09-03 23:57:59

标签: python django git virtualenv virtualenvwrapper

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

到目前为止,我已经从pypi手动安装了virtualenvvirtualenvwrapper,并在我启动终端时适当地编辑了我的bash.rc来源我的virtualenvs。然后我将我的回购克隆到了~/projects/project-name/websitename.com。然后我从virtualenvwrapper使用mkvirtualenv env-name~/projects/project-name/websitename.com。这恰好反映了我克隆的网络服务器的file-structure/setup。到现在为止还挺好。

我登录到dev服务器并激活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.txtcat test.txt,它列出了什么? Django==1.5.1,我刚刚手动安装的一个软件包。为什么不将我的依赖项从我的指定列表安装到我的virtualenv?我在这里搞砸了什么?

-edit -------------

在我的virtualenv

中,哪个pip给了我pip的路径

我只有1个virtualenv并且已激活

3 个答案:

答案 0 :(得分:6)

我通常的工作流程是

pip freeze > someFile.txt

然后使用

安装
pip install -r someFile.txt

所以我确定这应该可以正常工作。不幸的是,除了确保检查

之外,我无法告诉你任何事情
  1. 你真的属于你认为自己所处的虚拟世界。一定要运行

    workon yourVirtualEnvName
    

    在重要的情况下激活它。

  2. 请务必检查pip是否在您的virtualenv中。

    which pip
    

    给了我

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

答案 1 :(得分:3)

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

确保您在.bash_profile / .bashrc内没有任何可能会破坏您的虚拟内容的内容,例如$VIRTUAL_ENV$PYTHONHOME或{{1环境变量。

答案 2 :(得分:2)

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

希望能帮助某人。