首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装Flask + gunicorn后,pip有意外的依赖关系

安装Flask + gunicorn后,pip有意外的依赖关系
EN

Stack Overflow用户
提问于 2013-07-15 23:29:01
回答 3查看 764关注 0票数 2

创建新文件夹并创建虚拟环境后

代码语言:javascript
复制
$ virtualenv venv --distribute

并安装两个包

代码语言:javascript
复制
$ pip install Flask gunicorn

然后将所有当前pip安装的包写入一个文件。

代码语言:javascript
复制
$ pip freeze > requirements.txt
$ cat requirements.txt
Flask==0.10.1
Jinja2==2.7
MarkupSafe==0.18
Werkzeug==0.9.1
distribute==0.6.34
gunicorn==17.5
itsdangerous==0.22
wsgiref==0.1.2

我得到了比预期更长的软件包列表,谁负责安装它们,它们是用来做什么的?有问题的包列表:

代码语言:javascript
复制
wsgiref==0.1.2
itsdangerous==0.22
distribute==0.6.34
MarkupSafe==0.18

我主要在我的Ubuntu机器上使用pip,并且没有在相同的命令后安装这些包,我注意到只有在我的mac上才有这种行为。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-16 08:05:55

wsgirefdistribute总是出现在virtualenv中,甚至是一个“空”的,你还没有pip install任何东西。参见accepted answer to my where Why does pip freeze report some packages in a fresh virtualenv created with --no-site-packages?获得解释。注意这是Python3.3中修正的a bug

itsdangerousMarkupSafe是由较新的Flask版本引入的相对较新的新依赖项。

  • itsdangerous (docs)是Flask直接需要的。从版本0.10开始-请参阅添加此dependency.
  • MarkupSafegithub commit (docs)是Jinja2所需的,这是Flask所必需的。请参阅github commit.

Jinja2在其2.7版中添加了此依赖项

你说在运行相同的命令后,这些都没有安装在你的Ubuntu机器上。但是你有什么版本的FlaskJinja2呢?如果它们比你Mac上的版本旧,这就解释了为什么它们没有引入这些新的依赖项。

票数 4
EN

Stack Overflow用户

发布于 2013-07-15 23:33:57

这些看起来像是Flask dependencies,(或者说是flask依赖项的依赖项)

pip install --no-install --verbose Flask

我希望每个项目都有pypi had a list of dependencies,但我没有看到它们...

票数 1
EN

Stack Overflow用户

发布于 2013-07-15 23:35:51

您的virtualenv使用系统范围内安装的软件包,因此pip会将它们与新安装的软件包一起查看。

尝试在创建环境时添加--no-site-packages选项。

或者,尝试显式地运行安装在您的环境中的pip实例(path/to/your/env/bin/pip opts...),也许这会告诉pip忽略系统的包(根本不确定那个包)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17657965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档