我需要在气流作业中使用Pandas。尽管我是一个经验丰富的程序员,但我对Python相对来说还是一个新手。我想知道在我的requirements.txt
中,我是从 PyPI 还是apache-airflow[pandas]
安装pandas。
此外,我不完全确定提供程序apache-airflow[pandas]
的功能,以及 pip 如何解决它(看起来它不在 PyPi 中)。
提前感谢您的回答。
- 我尝试在PyPI中搜索
apache-airflow[pandas]
- 我还尝试在SO中搜索相关问题
2条答案
按热度按时间zujrkrfu1#
apache-airflow[pandas]
仅安装pandas>=0.17.1
:www.example.com。对于上下文,这是最初添加它的PR:https://github.com/apache/airflow/blob/0d2555b318d0eb4ed5f2d410eccf20e26ad004ad/setup.py#L308-L310. For context, this was the PR that originally added it: https://github.com/apache/airflow/pull/17575 .由于
>=0.17.1
的范围很广,我建议在requirements.txt
中将Pandas限制为一个更具体的版本,这样可以让您更好地控制Pandas版本,而不是像Airflow那样限制为大量的Pandas版本。8zzbczxx2#
我建议按照文档中的说明安装带有约束的气流:
这将保证稳定安装的气流没有冲突。2气流也更新约束时,释放是削减,因此当你升级气流,你会得到最新的可能版本,"同意"与所有其他气流依赖。
例如:
Airflow 2.5.1 with Python 3.7版本为:
Airflow 2.5.1 with Python 3.9版本为:
就个人而言,我不建议覆盖约束中的版本,因为这会带来生产环境不稳定/不一致的风险(除非您实现了自己的机制来生成约束)。如果您有一个特定的任务需要其他版本的库(Pandas或其他)那么我建议使用PythonVirtualenvOperator,DockerOperator或允许您为此任务设置特定库版本的任何其他替代方法。这也使DAG作者可以自由设置所需的任何库版本,而不依赖于共享相同Airflow示例和需要的其他团队同一个库的其他版本,或者甚至是同一个团队,但另一个项目需要不同的版本(请将其视为与在IDE中管理虚拟环境相同的方式)。
关于你提到的
apache-airflow[pandas]
的问题,注意这是额外的依赖,不是你提到的Airflow提供者,有它的原因是因为Airflow过去对Pandas有依赖(作为Airflow核心的一部分)然而,Pandas是沉重的图书馆,并不是每个人都需要它,因此将其移动到可选依赖项是有意义的。这样的话,只有那些需要在他们的气流环境中有Pandas的用户才会安装它。