Requirements.txt中需要先安装numpy再安装scipy吗?

3

我正在使用Azure运行Python服务器,并有一个requirements.txt文件来安装必要的依赖项。一切都很顺利,直到我添加了scipy。在构建时,我首先得到以下信息:

由于未安装'wheel'包,因此对于scipy,使用传统的setup.py进行安装。

然后,在安装它开始后,它会在numpy之前安装它,尽管numpy在requirements.txt中排名更高。我不确定该怎么做,这里是我的requirements.txt:

wheel==0.34.2
numpy==1.18.0
bs4==0.0.1
dash==1.12.0
dash-table==4.7.0
Flask==1.1.2
pandas==1.0.4
requests==2.12.4
tweepy==3.8.0
nltk==3.2.2
scipy==1.2.3
1个回答

2

在 requirements.txt 文件中,依赖项的顺序并不决定它们被安装的顺序。

相反,它们是按照依赖关系的顺序进行安装的。也许在你的情况下,还有其他一些依赖于 scipy 的包。

我认为你遇到了依赖地狱的问题,因为过度指定依赖项导致某个版本存在冲突。只需包含你自己代码中使用的依赖项,让 pip 自行解决传递性依赖关系即可。


问题在于scipy需要numpy作为依赖项,但它没有在自己的setup.py中安装。我必须先安装numpy,然后再安装scipy,因为在Azure上,它使用setup.py而不是pip来安装numpy和scipy(它使用pip来安装我的其他软件包)。我要补充说明的是,错误发生在安装scipy时,我不确定这一点是否清楚。 - xxdavis97
这是哪个Azure服务?如果您依赖Azure为您管理安装,那么您应该从requirements.txt中删除scipy。 - Krumelur
Azure Web App。Azure需要requirements.txt以安装第三方库。我的WebApp的一部分使用了scipy,因此我需要通过requirements.txt安装它。除了我所知道的requirements.txt之外,我没有其他安装方式。 - xxdavis97
我刚刚将scipy替换为sckit-learn,它安装了scipy作为依赖项,应用程序尚未完全部署,但现在我至少有一些希望。谢谢。 - xxdavis97
Azure 应用服务将只运行“pip install -r requirements.txt”请参见此处。但请记住,这仅是默认行为。您可以按照自己的方式自定义安装步骤。有时使用更具特色的基础映像更容易入手。 - Krumelur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接