Python Setup.py:在运行install_requires

时间:2019-01-31 19:09:05

标签: python pip environment-variables airflow setup.py

最近,要更改Apache Airflow,需要先设置环境变量SLUGIFY_USES_TEXT_UNIDECODE = yes才能安装: https://airflow.apache.org/installation.html

在我的自定义模块的setup.py脚本中,我将Airflow包括在install_requires列表中。因此,当我尝试安装自定义模块时,它也无法找到要设置的环境变量。

由于我有很多安装环境,因此我想在setup.py模块中自动设置该环境变量,使其始终存在。但是,如果仅将这一行放在setup.py的顶部或安装的自定义子类的run()方法的内部(通过cmdclass setup.py选项),则似乎不起作用。

os.environ['SLUGIFY_USES_TEXT_UNIDECODE'] = 'yes'

是否有关于如何在安装任何install_requires依赖项之前在setup.py中设置环境变量的想法?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如何安装自定义模块?使用车轮?然后,您很不走运,因为setuptools在编译/打包时而不是在安装时运行setup.py。对于轮子,唯一的解决方案是在安装之前设置环境变量:

SLUGIFY_USES_TEXT_UNIDECODE=yes pip install …

如果您是从sdist(源分发版)安装的,那么用setup.py欺骗就可以了。

答案 1 :(得分:0)

如果您在export SLUGIFY_USES_TEXT_UNIDECODE=yes之前运行pip install YOUR_CUSTOM_PACKAGE,它应该是开箱即用的。

另一种选择是在setup.py中使用以下内容:

import os
os.system("export SLUGIFY_USES_TEXT_UNIDECODE=yes")