首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中更改软件包安装顺序

在Python中更改软件包安装顺序
EN

Stack Overflow用户
提问于 2012-08-06 14:09:53
回答 2查看 635关注 0票数 4

有没有人知道Python中包的安装顺序是否很重要?更具体地说,我正在构建的Django网站的pip requirements.txt是:

代码语言:javascript
复制
Django==1.4
MySQL-python==1.2.3
django-evolution==0.6.7
django-pagination==1.0.7
boto==2.5.2
numpy==1.6.2
requests==0.13.1
simplejson==2.5.2
gunicorn==0.14.6

当部署到Heroku时,应用程序将崩溃,并显示以下错误:

代码语言:javascript
复制
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [12] [INFO] Worker exiting (pid: 12)
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [8] [INFO] Worker exiting (pid: 8)
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [4] [INFO] Handling signal: term
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [7] [INFO] Worker exiting (pid: 7)
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [4] [INFO] Starting gunicorn 0.14.6
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [4] [INFO] Listening at: http://0.0.0.0:20132 (4)
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [4] [INFO] Using worker: sync
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [7] [INFO] Booting worker with pid: 7
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [8] [INFO] Booting worker with pid: 8
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [9] [INFO] Booting worker with pid: 9
2012-08-05T09:26:56+00:00 app[web.1]: 2012-08-05 09:26:56 [10] [INFO] Booting worker with pid: 10
2012-08-05T09:26:57+00:00 heroku[web.1]: State changed from starting to up
2012-08-05T09:26:57+00:00 heroku[web.1]: Process exited with status 143
2012-08-05T09:27:17+00:00 app[web.1]: Usage: gunicorn [options]
2012-08-05T09:27:17+00:00 app[web.1]: gunicorn: error: no such option: --workers
2012-08-05T09:27:17+00:00 app[web.1]: 
2012-08-05T09:27:17+00:00 app[web.1]: 2012-08-05 09:27:17 [9] [INFO] Worker exiting (pid: 9)

其中,我的Procfile如下:

代码语言:javascript
复制
web: python manage.py collectstatic --noinput; gunicorn commerical_production.wsgi:application --workers=4 --bind=0.0.0.0:$PORT

通过简单地将需求的顺序更改为:

代码语言:javascript
复制
Django==1.4
gunicorn==0.14.6
MySQL-python==1.2.3
django-evolution==0.6.7
django-pagination==1.0.7
boto==2.5.2
numpy==1.6.2
requests==0.13.1
simplejson==2.5.2

(请注意,gunicorn现在移到了顶部)

幸运的是,我在尝试更改导入的顺序时发现了这一点,但我的问题是,是否有人遇到过这个问题,或者知道为什么从requirements.txt安装时,包的顺序会有所不同?这个问题是否表明我的应用程序中存在一些更大的依赖问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-07 17:00:30

Pip并不像easy_install那样擅长处理包依赖关系。我们在我们的项目中也遇到了同样的问题。即使req.txt中的顺序是正确的,我们仍然存在与顺序相关的依赖问题。

我的解决方案是将req.txt提供给easy_install,但您应该小心使用可编辑的包或来自github等的包。

您可能需要检查以下链接:

http://metak4ml.blogspot.com/2009/08/easyinstall-read-pip-requirementstxt.html http://community.webfaction.com/questions/1220/using-easy_install-to-get-all-dependencies-listed-in-requirementstxt (虽然阅读行答案与我们所做的很接近)

票数 1
EN

Stack Overflow用户

发布于 2012-08-07 17:12:51

Pyton安装脚本已经包含了需求和顺序,因此安装过程将遵守并按顺序安装需求文件中每个应用程序的所有需求。

因此,如果您自己的应用程序需要其他应用程序,则只需将您的要求放在安装文件中,并在requirements.txt中注册您的主应用程序

对于不需要编译的第三方python应用程序,您不必担心需求中的顺序。

否则,eazy_install将被弃用,请使用pip代替它。

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

https://stackoverflow.com/questions/11823240

复制
相关文章

相似问题

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