9
votes

The Situation

I am trying to install apache-airflow using pip into a conda environment. I am not able to, since setup.py egg_info keeps failing:

Command "python setup.py egg_info" failed with error code 1 in C:\Users\joshu\AppData\Local\Temp\pip-install-3efyslfh\apache-airflow\

message when I run

pip install "apache-airflow[s3, postgres]"

I ran this in Windows cmd, then did all the steps again as admin in cmd (shift+enter when opening cmd).

(myVenv) C:\Users\joshu\Documents>pip install "apache-airflow[s3, postgres]"
Collecting apache-airflow[postgres,s3]
  Using cached https://files.pythonhosted.org/packages/9e/12/6c70f9ef852b3061a3a6c9af03bd9dcdcaecb7d75c8898f82e3a54ad5f87/apache-airflow-1.9.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\joshu\AppData\Local\Temp\pip-install-3efyslfh\apache-airflow\setup.py", line 102
        async = [
              ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\joshu\AppData\Local\Temp\pip-install-3efyslfh\apache-airflow\

Steps I took

1) I first created a conda environment and installed pip and setuptools into the environment:

C:\Users\joshu\Documents>conda create -n airflow pip setuptools
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.5.4
  latest version: 4.5.10

Please update conda by running

    $ conda update -n base conda



## Package Plan ##

  environment location: C:\Users\joshu\Anaconda3\envs\airflow

  added / updated specs:
    - pip
    - setuptools


The following NEW packages will be INSTALLED:

    certifi:        2018.8.13-py37_0
    pip:            10.0.1-py37_0
    python:         3.7.0-hea74fb7_0
    setuptools:     40.0.0-py37_0
    vc:             14.1-h0510ff6_3
    vs2015_runtime: 15.5.2-3
    wheel:          0.31.1-py37_0
    wincertstore:   0.2-py37_0

C:\Users\joshu\Documents>activate airflow

(airflow) C:\Users\joshu\Documents> pip freeze
certifi==2018.8.13
wincertstore==0.2

(airflow) C:\Users\joshu\Documents>conda list
# packages in environment at C:\Users\joshu\Anaconda3\envs\airflow:
#
# Name                    Version                   Build  Channel
certifi                   2018.8.13                py37_0
pip                       10.0.1                   py37_0
python                    3.7.0                hea74fb7_0
setuptools                40.0.0                   py37_0
vc                        14.1                 h0510ff6_3
vs2015_runtime            15.5.2                        3
wheel                     0.31.1                   py37_0
wincertstore              0.2                      py37_0

(airflow) C:\Users\joshu\Documents>where pip
C:\Users\joshu\Anaconda3\envs\airflow\Scripts\pip.exe
C:\Users\joshu\Anaconda3\Scripts\pip.exe

(airflow) C:\Users\joshu\Documents>which pip
/c/Users/joshu/Anaconda3/envs/airflow/Scripts/pip

After this setup, running pip install apache-airflow gives me the error at the top of this page

Other steps I took

  1. Installing apache-airflow on my system (no conda environment). This works, but I'm looking to have it contained in an environment.
  2. Upgrading setuptools:
code:
(airflow) C:\Users\joshu\Documents>pip install --upgrade setuptools
Collecting setuptools
  Using cached https://files.pythonhosted.org/packages/66/e8/570bb5ca88a8bcd2a1db9c6246bb66615750663ffaaeada95b04ffe74e12/setuptools-40.2.0-py2.py3-none-any.whl
Installing collected packages: setuptools
  Found existing installation: setuptools 40.0.0
    Uninstalling setuptools-40.0.0:
      Successfully uninstalled setuptools-40.0.0
Successfully installed setuptools-40.2.0
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

(airflow) C:\Users\joshu\Documents>pip freeze
certifi==2018.8.13
wincertstore==0.2
You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

(airflow) C:\Users\joshu\Documents>conda list
# packages in environment at C:\Users\joshu\Anaconda3\envs\airflow:
#
# Name                    Version                   Build  Channel
certifi                   2018.8.13                py37_0
pip                       10.0.1                   py37_0
python                    3.7.0                hea74fb7_0
setuptools                40.2.0                    <pip>
setuptools                40.0.0                   py37_0
vc                        14.1                 h0510ff6_3
vs2015_runtime            15.5.2                        3
wheel                     0.31.1                   py37_0
wincertstore              0.2                      py37_0

(airflow) C:\Users\joshu\Documents>pip install "apache-airflow[s3, postgres]"
Collecting apache-airflow[postgres,s3]
  Using cached https://files.pythonhosted.org/packages/9e/12/6c70f9ef852b3061a3a6c9af03bd9dcdcaecb7d75c8898f82e3a54ad5f87/apache-airflow-1.9.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\joshu\AppData\Local\Temp\pip-install-n1v4sa6d\apache-airflow\setup.py", line 102
        async = [
              ^
    SyntaxError: invalid syntax

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\joshu\AppData\Local\Temp\pip-install-n1v4sa6d\apache-airflow\

I've also tried upgrading pip then running install -- no luck

(airflow) C:\Users\joshu\Documents>python -m pip install --upgrade pip
Collecting pip
  Using cached https://files.pythonhosted.org/packages/5f/25/e52d3f31441505a5f3af41213346e5b6c221c9e086a166f3703d2ddaf940/pip-18.0-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 10.0.1
    Uninstalling pip-10.0.1:
      Successfully uninstalled pip-10.0.1
Successfully installed pip-18.0

(airflow) C:\Users\joshu\Documents>which pip
/c/Users/joshu/Anaconda3/envs/airflow/Scripts/pip

(airflow) C:\Users\joshu\Documents>pip --version
pip 18.0 from c:\users\joshu\anaconda3\envs\airflow\lib\site-packages\pip (python 3.7)

(airflow) C:\Users\joshu\Documents>pip install "apache-airflow[s3, postgres]"

Ultimately I would like to have airflow and related packages I need for my project in a conda environment.

3
What are the various versions of Python you're using here? If the conda version is Python 3.7, then async is a reserved keyword and you should use Python 3.6, conda create -n airflow pip setuptools python=3.6 - darthbith
Here's a suggestion. Use virtualenv or pipenv instead of conda. Also note, to install into a conda env the syntax is conda install ****** . Not pip - Nihal Sangeeth
@NihalSangeeth Why are you suggesting to use virtualenv or pipenv on a question about conda? Pip is a perfectly valid (although not the most recommended) way of installing packages into conda environments - pip itself is installed in every conda environment, if it wasn't to be used, why would that be the default? Anyway, if I'm right that it's because of Python 3.7 vs. 3.6, then this could happen in any code, and the only reason pip is relevant here is because the code is in setup.py, which would also cause problems for building conda packages. - darthbith
@darthbith you genius! Yes the error was in plain sight -- async becoming a keyword in python 3.7 was the issue. Much appreciated! Installation now was smooth as butter. Ah the woes of package dependencies.. - Joshua Zastrow

3 Answers

11
votes

The error appears to be because async is a reserved keyword in Python 3.7 and this package has not updated their setup.py script. You can use Python 3.6 until the package is updated

conda create -n airflow pip setuptools python=3.6
conda activate airflow
pip install "apache-airflow[s3, postgres]"
5
votes

I also had the same problem. I solved it by installing with conda instead of pip:

conda install -c conda-forge airflow

https://anaconda.org/conda-forge/airflow

0
votes

I ran into the same problems. Apache Airflow 1.10 is incompatible.

My solution was to build the source code. I got the latest source code via git. This command creates a wheel file in the dist directory.

python3 setup.py bdist_wheel

Then you install

pip3 install apache_airflow-2.0.0.dev0+incubating-py3-none-any.whl