当我使用requirements.txt时,请不要从virtualenv中安装到site-packages目录

时间:2013-07-17 19:59:23

标签: python django windows virtualenv pip

我使用virtualenv运行Python相对较新,所以这可能是一个简单的解决方案,但我不能为我的生活找出正在发生的事情。我正在运行安装了Python 2.7.5的Windows 7专业版x64我安装了pip和virtualenv。我有一个django项目,我正在尝试使用Heroku存储库克隆的项目。当我尝试设置virtualenv并安装我的项目的要求时,我遇到了一个我无法弄清楚的奇怪错误。我的所有设置如下:

Django项目位于C:\Users\xxx\PythonProjects\myProject

我打开命令提示符,cd到myProject文件夹并执行以下命令:

C:\Users\xxx\PythonProjects\myProject> virtualenv --no-site-packages env

这应该为我的项目创建一个漂亮干净的虚拟环境,所以我继续按如下方式激活:

C:\Users\xxx\PythonProjects\myProject> Scripts\activate

提示符更改以指示我的virtualenv已变为活动状态所以我仔细检查“在哪里”的python和pip:

(env) C:\Users\xxx\PythonProjects\myProject> where python
C:\Users\xxx\PythonProjects\myProject\env\Scripts\python.exe
C:\Python27\python.exe

(env) C:\Users\xxx\PythonProjects\myProject>where pip
C:\Users\xxx\PythonProjects\myProject\env\Scripts\pip.exe
C:\Python27\Scripts\pip.exe

由于看起来virtualenv正常运行,我接下来尝试按如下方式提交需求文件:

(env) C:\Users\xxx\PythonProjects\myProject> pip install -r requirements.txt

pip似乎成功安装了我需要的所有软件包。但是当我加载python时会发生以下情况(django是我的需求文件中的一个包):

(env) C:\Users\xxx\PythonProjects\myProject>python
Python 2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named django

然后我转到site-packages文件夹以查明发生了什么并获得以下内容:

(env) C:\Users\xxx\PythonProjects\myProject\Lib\site-packages>dir
 Volume in drive C is Windows7_OS
 Volume Serial Number is 808F-577A

 Directory of C:\Users\xxx\PythonProjects\myProject\env\Lib\site-packages

07/17/2013  02:16 PM    <DIR>          .
07/17/2013  02:16 PM    <DIR>          ..
07/17/2013  02:16 PM               237 easy-install.pth
07/17/2013  02:16 PM    <DIR>          pip-1.3.1-py2.7.egg
07/15/2013  09:16 PM           332,005 setuptools-0.6c11-py2.7.egg
07/17/2013  02:16 PM                31 setuptools.pth
               3 File(s)        332,273 bytes
               3 Dir(s)  169,869,336,576 bytes free

看来我的pip调用未能将ANYTHING安装到我的site-packages文件夹中,因此python不知道在哪里可以找到我需要的包。相反,它们似乎都位于C:\Users\xxx\PythonProjects\myProject\env\build

如果我在没有需求文件的情况下使用pip install foo,那么一切正常,foo最终会出现在我的site-packages文件夹中。有没有办法让我可以使用需求文件,或者每次使用virtualenv时我是否必须手动安装每个包?对于可能过长的帖子感到抱歉,但我想确保所有相关信息都在这里。谢谢你的帮助!


使用其他信息进行编辑:

看来我的需求文件可能是问题的根源。只下载了大约一半的软件包,最后一个是django-polymorphic。我的需求文件中指定该包和以下包的行如下:

django-polymorphic==0.4.2
-e hg+https://bitbucket.org/fcurella/django-profiles@5c982ce7c040351fca9847a85dd4ff29f8a367e6#egg=django_profiles-dev
django-sekizai==0.7
-e git://github.com/divio/django-shop.git@0fb2258d27332166e3f76ad7cf7335c1f0a389b2#egg=django_shop-dev
-e git://github.com/fivethreeo/django-shop-categories.git@345fb100f5f680e6ac2066f74f25515eb2cd9374#egg=django_shop_categories-dev`

1 个答案:

答案 0 :(得分:1)

所以我找到了自己问题的答案。

基本上,如果你在Windows上运行Python 2.7(可能还有其他版本),一些软件包不能很好地运行。如果其他人遇到此问题,您应该从http://www.lfd.uci.edu/~gohlke/pythonlibs/下载Windows二进制文件,并从requirements.txt文件中删除这些包。执行此操作后,pip在安装过程中停止了崩溃,并在我的requirements.txt文件中正确安装了其余软件包。

我需要的包裹是:

  1. psycopg
  2. ReportLab的