【发布时间】:2017-11-04 13:57:55
【问题描述】:
我一直在尝试让 scipy 在 Beanstalk 应用程序上工作。基本上我有一个我正在开发的 python web 应用程序,它使用 Flask 和一些其他库,包括 Scipy。在我的项目目录中,我只有 3 个文件。它们是:
application.py
requirements.txt
.ebextensions/python.config
我的 application.py 文件非常简单,不包含太多可能导致我出现问题的内容,因此不会将代码粘贴到此处。我的 requirements.txt 文件包含以下内容:
Flask==0.10.1
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
numpy==1.12.1
scipy==0.19.0
scikit-learn==0.18.1
sklearn==0.0
Werkzeug==0.12.2
我的 .ebextensions/python.config 文件包含以下内容:
packages:
yum:
make: []
gcc-c++: []
gcc-gfortran: []
python-devel: []
atlas-sse3-devel: []
lapack-devel: []
libpng-devel: []
freetype-devel: []
zlib-devel: []
container_commands:
AddGlobalWSGIGroupAccess:
command: "if ! grep -q 'WSGIApplicationGroup %{GLOBAL}' ../wsgi.conf ; then echo 'WSGIApplicationGroup %{GLOBAL}' >> ../wsgi.conf; fi;"
我基本上只是设置了烧瓶应用程序并让它在本地运行,然后在我的 Mac 上使用 Elastic Beanstalk cli 尝试将我的本地应用程序发送到 Beanstalk 并让它作为网站运行。因此,在完成所有 pip 安装和 eb init 之后,我在终端中执行以下操作:
eb create flask-env
这会运行一段时间,然后失败并给出以下错误:
ERROR: Your requirements.txt is invalid. Snapshot your logs for details.
ERROR: [Instance: i-00b93584dae09f4d2] Command failed on instance. Return code: 1 Output: (TRUNCATED)...)
File "/usr/lib64/python2.7/subprocess.py", line 541, in check_call
raise CalledProcessError(retcode, cmd)
然后我检查了我的 eb-activity.log 文件以尝试更好地了解问题。 eb-activity.log 中有很多看起来与此错误有关的内容,但日志文件中一些最有用的错误消息如下:
File "scipy/linalg/setup.py", line 20, in configuration
raise NotFoundError('no lapack/blas resources found')
numpy.distutils.system_info.NotFoundError: no lapack/blas resources found
lapack_info:
libraries lapack not found in ['/opt/python/run/venv/lib', '/usr/local/lib64', '/usr/local/lib', '/usr/lib64', '/usr/lib']
NOT AVAILABLE
openblas_lapack_info:
libraries openblas not found in ['/opt/python/run/venv/lib', '/usr/local/lib64', '/usr/local/lib', '/usr/lib64', '/usr/lib']
NOT AVAILABLE
正如您所见,日志中的这些错误消息非常冗长且难以解释。在谷歌搜索之后,我认为我的问题源于 scipy(也许还有 numpy)有一堆与 Python 无关的依赖项,而 pip 无法处理。
我认为基于其他一些答案,我发现我的.ebextensions/python.config 可以解决这个问题,但它似乎没有——它甚至没有出现在我的目录中,因为它以“.”开头。我是在做一些小错误还是什么?
更新:如果这也很重要,我正在使用 mac OS。我在 cmets 中建议的链接中发现了一些看起来很有帮助的东西,但这似乎已经过时了(根据答案中的 cmets),并且不特定于 mac OS,因此似乎有点没用。
【问题讨论】:
-
这个答案可能会有所帮助:stackoverflow.com/a/14639949/4638378
-
您的最后一个错误块很容易解释。信息 1:
NotFoundError: no lapack/blas resources found。信息 2:library lapack not found in [places where it should be]。信息 3:libraries openblas not found in [places where it should be]。这些确实表明 lapack/blas 是 scipy 缺少的依赖项。 -
@AndrasDeak 如果您想将其发布为答案,我现在正在尝试,如果可行,将接受它!
-
我对 beanstalk 和 mac 一无所知,坦率地说,我认为这个信息不值得代表:) 你现在可能已经找到了,但无论如何:有一些提示依赖here
-
按照stackoverflow.com/a/14639949/4638378 的建议,您是否尝试安装
lapack-devel和blas-devel?
标签: python amazon-web-services numpy amazon-ec2 amazon-elastic-beanstalk