有没有人知道Python中包的安装顺序是否很重要?更具体地说,我正在构建的Django网站的pip requirements.txt是:
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时,应用程序将崩溃,并显示以下错误:
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如下:
web: python manage.py collectstatic --noinput; gunicorn commerical_production.wsgi:application --workers=4 --bind=0.0.0.0:$PORT通过简单地将需求的顺序更改为:
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安装时,包的顺序会有所不同?这个问题是否表明我的应用程序中存在一些更大的依赖问题?
发布于 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 (虽然阅读行答案与我们所做的很接近)
发布于 2012-08-07 17:12:51
Pyton安装脚本已经包含了需求和顺序,因此安装过程将遵守并按顺序安装需求文件中每个应用程序的所有需求。
因此,如果您自己的应用程序需要其他应用程序,则只需将您的要求放在安装文件中,并在requirements.txt中注册您的主应用程序
对于不需要编译的第三方python应用程序,您不必担心需求中的顺序。
否则,eazy_install将被弃用,请使用pip代替它。
https://stackoverflow.com/questions/11823240
复制相似问题