使用pip和requirements.txt在弹性beanstalk上安装scikit-learn和scipy

kri*_*711 1 python pip amazon-web-services

当部署到弹性beanstalk时,我不断收到错误:

Partial import of sklearn during the build process.
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-build-Le610u/scikit-learn/setup.py", line 247, in <module>
      setup_package()
    File "/tmp/pip-build-Le610u/scikit-learn/setup.py", line 237, in setup_package
      .format(scipy_req_str, instructions))
  ImportError: Scientific Python (SciPy) is not installed.
  scikit-learn requires SciPy >= 0.9.
  Installation instructions are available on the scikit-learn website: http://scikit-learn.org/stable/install.html
Run Code Online (Sandbox Code Playgroud)

我的requirements.txt里面有scikit-learn和scipy.

为什么会这样?我不想手动安装软件包,并且在印象中,pip会为我排序安装顺序(它目前正在尝试在scipy之前安装scikit-learn).值得注意的是相同的requirements.txt在我的本地计算机上运行得非常好.

我该怎么做才能解决这个问题?

编辑:如果我更改requirements.txt中条目的顺序,所以scipy高于scikit-learn,它可以正常工作.我仍然想知道为什么这会失败反过来,因为pip freeze> requirements.txt将按字母顺序覆盖它.

Jon*_*Jon 6

需求文件是包含要使用的项目列表的文件pip:

逻辑上,Requirements文件只是放在文件中的pip安装参数列表.

因此,您的条目requirements.txt将按顺序处理.就像现在一样,pip 没有真正的依赖解析,而scipy缺乏正确install_requiressetup.py,你必须首先告诉pip install scipy.(如果您有兴趣,请参阅Donald Stufft撰写的"setup.py vs requirements.txt")

requirements.txt在运行脚本之前,在本地计算机上运行相同的原因可能是您安装了scipy.您可以通过virtualenv在计算机上创建一个干净的python环境来验证这一点,然后再次运行该脚本.