当前位置: 首页 > 知识库问答 >
问题:

当我使用requirements.txt时,pip不会从虚拟环境中安装到站点包目录

琴献
2023-03-14

我对使用virtualenv运行Python还比较陌生,所以这可能是一个简单的修复方法,但我一辈子都搞不清楚到底发生了什么。我正在运行安装了Python 2.7.5的Windows 7 professional x64,我已经安装了pip和virtualenv。我有一个django项目,我正在尝试工作,我已经从Heroku存储库中克隆了这个项目。当我尝试设置virtualenv并安装项目的需求时,我遇到了一个我无法理解的奇怪错误。我的所有设置如下所示:

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

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

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

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

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

提示更改,以指示我的虚拟环境已成为活动,所以我仔细检查"在哪里"ing 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

因为它看起来像虚拟环境正在正常运行,我接下来尝试按如下方式提取需求文件:

(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

然后,我将cd刻录到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调用未能将任何东西安装到我的site-包文件夹中,所以python不知道在哪里可以找到我需要的包。相反,它们似乎都位于C:\用户\xxx\PythonProjects\myProject\env\build

如果我在没有需求文件的情况下使用pip-install-foo,那么一切都会正常运行,foo最终会出现在我的站点包文件夹中。有没有一种方法可以让它与需求文件一起工作,或者每次使用virtualenv时都必须手动安装每个包?很抱歉,这篇文章可能太长了,但我想确保所有相关信息都在这里。谢谢你的帮助!

使用其他信息编辑:

似乎我的需求文件可能是问题的根源。只有大约一半的软件包被下载,最后一个是django多态。我的需求文件中指定该包和以下包的行如下:

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个答案

王子明
2023-03-14

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

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

我需要的软件包是:

  1. 枕头
  2. 心理医生
  3. reportlab
 类似资料:
  • 我所期望的 编辑:解决方案相关为什么虚拟环境从我的shell继承$PYTHONPATH?

  • 我试图填补我的PyCharm Django项目有一个虚拟环境的requirements.txt。当我的虚拟环境已经启动时,我正在使用以下内容: 这将创建大量条目,如图所示,但没有我添加的包条目,如djangorestframework、Django crispy表单等。 我要怎么做才能列出我所有的包裹?安装在虚拟环境中的包都不会列在requirements.txt 此刻我的requirements

  • 问题内容: 我目前在我的机器上已经安装了Enthought Python发行版 ,并且不想破坏它,但是我想从Continuum迁移到Anaconda。 我可以轻松地将Anaconda安装到我创建的virtualenv目录中,但是我不确定如何告诉virtualenv使用Python的anaconda版本。如果我告诉整个系统使用它,我可以用类似的方式进行改动。有没有办法在virtualenv中做到这一

  • 问题内容: 我正在尝试使用需求文件安装python软件。 所以我创建了一个虚拟环境 …然后我下载了软件包,但未安装错误:http : //pastie.org/4079800 令人惊讶的是,如果我尝试手动安装每个软件包,它们的安装就可以了。例如: 我迷路了。到底是怎么回事? PS:我将v1.1和v2.7.2与和 问题答案: 看起来该软件包对numpy具有安装时依赖性。Pip完成了两遍您的要求:首先

  • 我有一个python包我想使用,但它似乎通过pip安装的版本是严重过时的,到点的例子代码不工作从git. 如何在虚拟环境中直接从git安装python包而不必经过pip? 或者,由于我对pip了解不多,如果永远不需要,那么我如何强制pip在github上安装最新版本?

  • [机译]Conda 4.2.13 MacOSX 10.12.1 我正在尝试将程序包从安装到使用anaconda创建的新环境(虚拟)中。在Anaconda文档中,它说这很好。这与virtualenv的做法相同。 激活你想要放置程序的环境,然后安装一个程序。。。 我在Anaconda中创建了一个空环境,如下所示: 激活它: 然后,我可以在终端中看到我正在我的env中工作。问题来了,当我尝试安装一个包使