Skip to content

refuses to pip install openml #727

Closed

Description

@azrdev

Description

Installing openml like the guide says using pip install openml fails deliberatly, and says pip install -e . (i.e. on a local checkout) should be used:

ERROR: Please install this package with pip: `pip install -e .` Installation requires pip>=10.0.

Apparently this was added to setup.py to prevent setuptools building numpy: https://github.com/openml/openml-python/blob/develop/setup.py#L9..L14
But since pip is able to pull binary numpy from wheels, I suspect this test should not fire if setup.py is called through pip.

Versions

pip 19.1.1
openml on pypi is currently 0.9.0

Activity

  1. mfeurer commented on Jul 9, 2019

    @mfeurer
    Collaborator

    Thanks for reporting this. We'll have a look into this.

  2. PGijsbers commented on Jul 12, 2019

    @PGijsbers
    Collaborator

    I can not reproduce the issue locally. Does the full output of the pip install openml command provide more information (and if so, could you provide the full output)?

  3. azrdev commented on Jul 13, 2019

    @azrdev
    Author

    @PGijsbers full stdout/stderr below. As I wrote, it prints that warning from setup.py.

    $ pip install openml
    Collecting openml
      Using cached https://files.pythonhosted.org/packages/d6/36/4b733c0b76b5e2716d2b281b62bc6e4c8986032e5d00ab14595afd71383f/openml-0.9.0.tar.gz
    Collecting liac-arff>=2.4.0 (from openml)
      Using cached https://files.pythonhosted.org/packages/e9/35/fbc9217cfa91d98888b43e1a19c03a50d716108c58494c558c65e308f372/liac-arff-2.4.0.tar.gz
    Collecting xmltodict (from openml)
      Using cached https://files.pythonhosted.org/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl
    Collecting requests (from openml)
      Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl
    Collecting scikit-learn>=0.18 (from openml)
      Using cached https://files.pythonhosted.org/packages/21/a4/a48bd4b0d15395362b561df7e7247de87291105eb736a3b2aaffebf437b9/scikit_learn-0.21.2-cp37-cp37m-manylinux1_x86_64.whl
    Collecting python-dateutil (from openml)
      Using cached https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl
    Collecting pandas>=0.19.2 (from openml)
      Using cached https://files.pythonhosted.org/packages/22/e6/2d47835f91eb010036be207581fa113fb4e3822ec1b4bafb0d3d105fede6/pandas-0.24.2-cp37-cp37m-manylinux1_x86_64.whl
    Collecting scipy>=0.13.3 (from openml)
      Using cached https://files.pythonhosted.org/packages/5d/bd/c0feba81fb60e231cf40fc8a322ed5873c90ef7711795508692b1481a4ae/scipy-1.3.0-cp37-cp37m-manylinux1_x86_64.whl
    Collecting numpy>=1.6.2 (from openml)
      Using cached https://files.pythonhosted.org/packages/fc/d1/45be1144b03b6b1e24f9a924f23f66b4ad030d834ad31fb9e5581bd328af/numpy-1.16.4-cp37-cp37m-manylinux1_x86_64.whl
    Collecting certifi>=2017.4.17 (from requests->openml)
      Using cached https://files.pythonhosted.org/packages/69/1b/b853c7a9d4f6a6d00749e94eb6f3a041e342a885b87340b79c1ef73e3a78/certifi-2019.6.16-py2.py3-none-any.whl
    Collecting chardet<3.1.0,>=3.0.2 (from requests->openml)
      Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
    Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests->openml)
      Using cached https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl
    Collecting idna<2.9,>=2.5 (from requests->openml)
      Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
    Collecting joblib>=0.11 (from scikit-learn>=0.18->openml)
      Using cached https://files.pythonhosted.org/packages/cd/c1/50a758e8247561e58cb87305b1e90b171b8c767b15b12a1734001f41d356/joblib-0.13.2-py2.py3-none-any.whl
    Collecting six>=1.5 (from python-dateutil->openml)
      Using cached https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
    Collecting pytz>=2011k (from pandas>=0.19.2->openml)
      Using cached https://files.pythonhosted.org/packages/3d/73/fe30c2daaaa0713420d0382b16fbb761409f532c56bdcc514bf7b6262bb6/pytz-2019.1-py2.py3-none-any.whl
    Installing collected packages: liac-arff, xmltodict, certifi, chardet, urllib3, idna, requests, numpy, joblib, scipy, scikit-learn, six, python-dateutil, pytz, pandas, openml
      Running setup.py install for liac-arff ... done
      Running setup.py install for openml ... error
        Complete output from command /tmp/env/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-op0iui1p/openml/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-4p8iw0vh/install-record.txt --single-version-externally-managed --compile --install-headers /tmp/env/include/site/python3.7/openml:
        Please install this package with pip: `pip install -e .` Installation requires pip>=10.0.
        
        ----------------------------------------
    Command "/tmp/env/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-op0iui1p/openml/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-4p8iw0vh/install-record.txt --single-version-externally-managed --compile --install-headers /tmp/env/include/site/python3.7/openml" failed with error code 1 in /tmp/pip-install-op0iui1p/openml/
    You are using pip version 19.0.3, however version 19.1.1 is available.
    You should consider upgrading via the 'pip install --upgrade pip' command.
  4. PGijsbers commented on Jul 15, 2019

    @PGijsbers
    Collaborator

    Thanks @azrdev. Of course I did not doubt you were speaking the truth, the reason I asked for the output is that we can see if there is other identifying information which allows us to spot if setup.py has been called from pip or not. Sorry if you had the wrong impression.

    In this case, we see setup.py gets called with quite a few additional arguments if it is called from pip, in particular a --record option to a temporary file with 'pip' in its name. @mfeurer what about specifically checking for this condition to detect usage of pip?

  5. mfeurer commented on Jul 15, 2019

    @mfeurer
    Collaborator

    Hey, could it be that a missing wheel is the reason why python setup.py install installs packages by compiling the source? I just created an empty conda environment and install openml with python setup.py install and it took ~1 minute and didn't compile anything.

    The log:

    Solving environment: done
    
    
    ==> WARNING: A newer version of conda exists. <==
      current version: 4.5.11
      latest version: 4.7.5
    
    Please update conda by running
    
        $ conda update -n base -c defaults conda
    
    
    
    ## Package Plan ##
    
      environment location: /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue
    
    
    Proceed ([y]/n)? y
    
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    #
    # To activate this environment, use
    #
    #     $ conda activate testopenmlissue
    #
    # To deactivate an active environment, use
    #
    #     $ conda deactivate
    
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/automl_competition_2015/auto-sklearn$ source activate testopenmlissue
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/automl_competition_2015/auto-sklearn$ conda install python
    Solving environment: done
    
    
    ==> WARNING: A newer version of conda exists. <==
      current version: 4.5.11
      latest version: 4.7.5
    
    Please update conda by running
    
        $ conda update -n base -c defaults conda
    
    
    
    ## Package Plan ##
    
      environment location: /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue
    
      added / updated specs: 
        - python
    
    
    The following NEW packages will be INSTALLED:
    
        _libgcc_mutex:   0.1-main               
        ca-certificates: 2019.5.15-0            
        certifi:         2019.6.16-py37_0       
        libedit:         3.1.20181209-hc058e9b_0
        libffi:          3.2.1-hd88cf55_4       
        libgcc-ng:       9.1.0-hdf63c60_0       
        libstdcxx-ng:    9.1.0-hdf63c60_0       
        ncurses:         6.1-he6710b0_1         
        openssl:         1.1.1c-h7b6447c_1      
        pip:             19.1.1-py37_0          
        python:          3.7.3-h0371630_0       
        readline:        7.0-h7b6447c_5         
        setuptools:      41.0.1-py37_0          
        sqlite:          3.28.0-h7b6447c_0      
        tk:              8.6.8-hbc83047_0       
        wheel:           0.33.4-py37_0          
        xz:              5.2.4-h14c3975_4       
        zlib:            1.2.11-h7b6447c_3      
    
    Proceed ([y]/n)? y
    
    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/automl_competition_2015/auto-sklearn$ cd ~/sync_dir/projects/openml/python/
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/openml/python$ python setup.py install
    Please install this package with pip: `pip install -e .` Installation requires pip>=10.0.
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/openml/python$ 
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/openml/python$ 
    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/openml/python$ python setup.py install
    Please install this package with pip: `pip install -e .` Installation requires pip>=10.0.
    running install
    running bdist_egg
    running egg_info
    writing openml.egg-info/PKG-INFO
    writing dependency_links to openml.egg-info/dependency_links.txt
    writing requirements to openml.egg-info/requires.txt
    writing top-level names to openml.egg-info/top_level.txt
    reading manifest file 'openml.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no files found matching 'requirements.txt'
    writing manifest file 'openml.egg-info/SOURCES.txt'
    installing library code to build/bdist.linux-x86_64/egg
    running install_lib
    running build_py
    creating build
    creating build/lib
    creating build/lib/tests
    copying tests/__init__.py -> build/lib/tests
    creating build/lib/openml
    copying openml/__init__.py -> build/lib/openml
    copying openml/config.py -> build/lib/openml
    copying openml/_api_calls.py -> build/lib/openml
    copying openml/__version__.py -> build/lib/openml
    copying openml/utils.py -> build/lib/openml
    copying openml/exceptions.py -> build/lib/openml
    copying openml/testing.py -> build/lib/openml
    creating build/lib/tests/test_examples
    copying tests/test_examples/__init__.py -> build/lib/tests/test_examples
    copying tests/test_examples/test_OpenMLDemo.py -> build/lib/tests/test_examples
    creating build/lib/tests/test_flows
    copying tests/test_flows/__init__.py -> build/lib/tests/test_flows
    copying tests/test_flows/test_flow.py -> build/lib/tests/test_flows
    copying tests/test_flows/test_flow_functions.py -> build/lib/tests/test_flows
    creating build/lib/tests/test_runs
    copying tests/test_runs/__init__.py -> build/lib/tests/test_runs
    copying tests/test_runs/test_run.py -> build/lib/tests/test_runs
    copying tests/test_runs/test_trace.py -> build/lib/tests/test_runs
    copying tests/test_runs/test_run_functions.py -> build/lib/tests/test_runs
    creating build/lib/tests/test_utils
    copying tests/test_utils/__init__.py -> build/lib/tests/test_utils
    copying tests/test_utils/test_utils.py -> build/lib/tests/test_utils
    creating build/lib/tests/test_extensions
    copying tests/test_extensions/__init__.py -> build/lib/tests/test_extensions
    copying tests/test_extensions/test_functions.py -> build/lib/tests/test_extensions
    creating build/lib/tests/test_setups
    copying tests/test_setups/__init__.py -> build/lib/tests/test_setups
    copying tests/test_setups/test_setup_functions.py -> build/lib/tests/test_setups
    creating build/lib/tests/test_datasets
    copying tests/test_datasets/__init__.py -> build/lib/tests/test_datasets
    copying tests/test_datasets/test_dataset.py -> build/lib/tests/test_datasets
    copying tests/test_datasets/test_dataset_functions.py -> build/lib/tests/test_datasets
    creating build/lib/tests/test_openml
    copying tests/test_openml/test_openml.py -> build/lib/tests/test_openml
    copying tests/test_openml/__init__.py -> build/lib/tests/test_openml
    copying tests/test_openml/test_config.py -> build/lib/tests/test_openml
    creating build/lib/tests/test_tasks
    copying tests/test_tasks/__init__.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_clustering_task.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_regression_task.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_task_methods.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_classification_task.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_task.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_split.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_learning_curve_task.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_supervised_task.py -> build/lib/tests/test_tasks
    copying tests/test_tasks/test_task_functions.py -> build/lib/tests/test_tasks
    creating build/lib/tests/test_flows/dummy_learn
    copying tests/test_flows/dummy_learn/__init__.py -> build/lib/tests/test_flows/dummy_learn
    copying tests/test_flows/dummy_learn/dummy_forest.py -> build/lib/tests/test_flows/dummy_learn
    creating build/lib/tests/test_extensions/test_sklearn_extension
    copying tests/test_extensions/test_sklearn_extension/__init__.py -> build/lib/tests/test_extensions/test_sklearn_extension
    copying tests/test_extensions/test_sklearn_extension/test_sklearn_extension.py -> build/lib/tests/test_extensions/test_sklearn_extension
    creating build/lib/openml/evaluations
    copying openml/evaluations/__init__.py -> build/lib/openml/evaluations
    copying openml/evaluations/evaluation.py -> build/lib/openml/evaluations
    copying openml/evaluations/functions.py -> build/lib/openml/evaluations
    creating build/lib/openml/study
    copying openml/study/__init__.py -> build/lib/openml/study
    copying openml/study/study.py -> build/lib/openml/study
    copying openml/study/functions.py -> build/lib/openml/study
    creating build/lib/openml/runs
    copying openml/runs/__init__.py -> build/lib/openml/runs
    copying openml/runs/run.py -> build/lib/openml/runs
    copying openml/runs/trace.py -> build/lib/openml/runs
    copying openml/runs/functions.py -> build/lib/openml/runs
    creating build/lib/openml/setups
    copying openml/setups/__init__.py -> build/lib/openml/setups
    copying openml/setups/setup.py -> build/lib/openml/setups
    copying openml/setups/functions.py -> build/lib/openml/setups
    creating build/lib/openml/datasets
    copying openml/datasets/__init__.py -> build/lib/openml/datasets
    copying openml/datasets/data_feature.py -> build/lib/openml/datasets
    copying openml/datasets/dataset.py -> build/lib/openml/datasets
    copying openml/datasets/functions.py -> build/lib/openml/datasets
    creating build/lib/openml/flows
    copying openml/flows/__init__.py -> build/lib/openml/flows
    copying openml/flows/flow.py -> build/lib/openml/flows
    copying openml/flows/functions.py -> build/lib/openml/flows
    creating build/lib/openml/extensions
    copying openml/extensions/__init__.py -> build/lib/openml/extensions
    copying openml/extensions/extension_interface.py -> build/lib/openml/extensions
    copying openml/extensions/functions.py -> build/lib/openml/extensions
    creating build/lib/openml/tasks
    copying openml/tasks/__init__.py -> build/lib/openml/tasks
    copying openml/tasks/split.py -> build/lib/openml/tasks
    copying openml/tasks/task.py -> build/lib/openml/tasks
    copying openml/tasks/functions.py -> build/lib/openml/tasks
    creating build/lib/openml/extensions/sklearn
    copying openml/extensions/sklearn/__init__.py -> build/lib/openml/extensions/sklearn
    copying openml/extensions/sklearn/extension.py -> build/lib/openml/extensions/sklearn
    creating build/bdist.linux-x86_64
    creating build/bdist.linux-x86_64/egg
    creating build/bdist.linux-x86_64/egg/tests
    creating build/bdist.linux-x86_64/egg/tests/test_examples
    copying build/lib/tests/test_examples/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_examples
    copying build/lib/tests/test_examples/test_OpenMLDemo.py -> build/bdist.linux-x86_64/egg/tests/test_examples
    creating build/bdist.linux-x86_64/egg/tests/test_flows
    copying build/lib/tests/test_flows/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_flows
    creating build/bdist.linux-x86_64/egg/tests/test_flows/dummy_learn
    copying build/lib/tests/test_flows/dummy_learn/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_flows/dummy_learn
    copying build/lib/tests/test_flows/dummy_learn/dummy_forest.py -> build/bdist.linux-x86_64/egg/tests/test_flows/dummy_learn
    copying build/lib/tests/test_flows/test_flow.py -> build/bdist.linux-x86_64/egg/tests/test_flows
    copying build/lib/tests/test_flows/test_flow_functions.py -> build/bdist.linux-x86_64/egg/tests/test_flows
    copying build/lib/tests/__init__.py -> build/bdist.linux-x86_64/egg/tests
    creating build/bdist.linux-x86_64/egg/tests/test_runs
    copying build/lib/tests/test_runs/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_runs
    copying build/lib/tests/test_runs/test_run.py -> build/bdist.linux-x86_64/egg/tests/test_runs
    copying build/lib/tests/test_runs/test_trace.py -> build/bdist.linux-x86_64/egg/tests/test_runs
    copying build/lib/tests/test_runs/test_run_functions.py -> build/bdist.linux-x86_64/egg/tests/test_runs
    creating build/bdist.linux-x86_64/egg/tests/test_utils
    copying build/lib/tests/test_utils/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_utils
    copying build/lib/tests/test_utils/test_utils.py -> build/bdist.linux-x86_64/egg/tests/test_utils
    creating build/bdist.linux-x86_64/egg/tests/test_extensions
    copying build/lib/tests/test_extensions/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_extensions
    creating build/bdist.linux-x86_64/egg/tests/test_extensions/test_sklearn_extension
    copying build/lib/tests/test_extensions/test_sklearn_extension/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_extensions/test_sklearn_extension
    copying build/lib/tests/test_extensions/test_sklearn_extension/test_sklearn_extension.py -> build/bdist.linux-x86_64/egg/tests/test_extensions/test_sklearn_extension
    copying build/lib/tests/test_extensions/test_functions.py -> build/bdist.linux-x86_64/egg/tests/test_extensions
    creating build/bdist.linux-x86_64/egg/tests/test_setups
    copying build/lib/tests/test_setups/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_setups
    copying build/lib/tests/test_setups/test_setup_functions.py -> build/bdist.linux-x86_64/egg/tests/test_setups
    creating build/bdist.linux-x86_64/egg/tests/test_datasets
    copying build/lib/tests/test_datasets/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_datasets
    copying build/lib/tests/test_datasets/test_dataset.py -> build/bdist.linux-x86_64/egg/tests/test_datasets
    copying build/lib/tests/test_datasets/test_dataset_functions.py -> build/bdist.linux-x86_64/egg/tests/test_datasets
    creating build/bdist.linux-x86_64/egg/tests/test_openml
    copying build/lib/tests/test_openml/test_openml.py -> build/bdist.linux-x86_64/egg/tests/test_openml
    copying build/lib/tests/test_openml/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_openml
    copying build/lib/tests/test_openml/test_config.py -> build/bdist.linux-x86_64/egg/tests/test_openml
    creating build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/__init__.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_clustering_task.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_regression_task.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_task_methods.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_classification_task.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_task.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_split.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_learning_curve_task.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_supervised_task.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    copying build/lib/tests/test_tasks/test_task_functions.py -> build/bdist.linux-x86_64/egg/tests/test_tasks
    creating build/bdist.linux-x86_64/egg/openml
    creating build/bdist.linux-x86_64/egg/openml/evaluations
    copying build/lib/openml/evaluations/__init__.py -> build/bdist.linux-x86_64/egg/openml/evaluations
    copying build/lib/openml/evaluations/evaluation.py -> build/bdist.linux-x86_64/egg/openml/evaluations
    copying build/lib/openml/evaluations/functions.py -> build/bdist.linux-x86_64/egg/openml/evaluations
    copying build/lib/openml/__init__.py -> build/bdist.linux-x86_64/egg/openml
    creating build/bdist.linux-x86_64/egg/openml/study
    copying build/lib/openml/study/__init__.py -> build/bdist.linux-x86_64/egg/openml/study
    copying build/lib/openml/study/study.py -> build/bdist.linux-x86_64/egg/openml/study
    copying build/lib/openml/study/functions.py -> build/bdist.linux-x86_64/egg/openml/study
    creating build/bdist.linux-x86_64/egg/openml/runs
    copying build/lib/openml/runs/__init__.py -> build/bdist.linux-x86_64/egg/openml/runs
    copying build/lib/openml/runs/run.py -> build/bdist.linux-x86_64/egg/openml/runs
    copying build/lib/openml/runs/trace.py -> build/bdist.linux-x86_64/egg/openml/runs
    copying build/lib/openml/runs/functions.py -> build/bdist.linux-x86_64/egg/openml/runs
    copying build/lib/openml/config.py -> build/bdist.linux-x86_64/egg/openml
    creating build/bdist.linux-x86_64/egg/openml/setups
    copying build/lib/openml/setups/__init__.py -> build/bdist.linux-x86_64/egg/openml/setups
    copying build/lib/openml/setups/setup.py -> build/bdist.linux-x86_64/egg/openml/setups
    copying build/lib/openml/setups/functions.py -> build/bdist.linux-x86_64/egg/openml/setups
    creating build/bdist.linux-x86_64/egg/openml/datasets
    copying build/lib/openml/datasets/__init__.py -> build/bdist.linux-x86_64/egg/openml/datasets
    copying build/lib/openml/datasets/data_feature.py -> build/bdist.linux-x86_64/egg/openml/datasets
    copying build/lib/openml/datasets/dataset.py -> build/bdist.linux-x86_64/egg/openml/datasets
    copying build/lib/openml/datasets/functions.py -> build/bdist.linux-x86_64/egg/openml/datasets
    copying build/lib/openml/_api_calls.py -> build/bdist.linux-x86_64/egg/openml
    copying build/lib/openml/__version__.py -> build/bdist.linux-x86_64/egg/openml
    creating build/bdist.linux-x86_64/egg/openml/flows
    copying build/lib/openml/flows/__init__.py -> build/bdist.linux-x86_64/egg/openml/flows
    copying build/lib/openml/flows/flow.py -> build/bdist.linux-x86_64/egg/openml/flows
    copying build/lib/openml/flows/functions.py -> build/bdist.linux-x86_64/egg/openml/flows
    copying build/lib/openml/utils.py -> build/bdist.linux-x86_64/egg/openml
    copying build/lib/openml/exceptions.py -> build/bdist.linux-x86_64/egg/openml
    creating build/bdist.linux-x86_64/egg/openml/extensions
    copying build/lib/openml/extensions/__init__.py -> build/bdist.linux-x86_64/egg/openml/extensions
    creating build/bdist.linux-x86_64/egg/openml/extensions/sklearn
    copying build/lib/openml/extensions/sklearn/__init__.py -> build/bdist.linux-x86_64/egg/openml/extensions/sklearn
    copying build/lib/openml/extensions/sklearn/extension.py -> build/bdist.linux-x86_64/egg/openml/extensions/sklearn
    copying build/lib/openml/extensions/extension_interface.py -> build/bdist.linux-x86_64/egg/openml/extensions
    copying build/lib/openml/extensions/functions.py -> build/bdist.linux-x86_64/egg/openml/extensions
    copying build/lib/openml/testing.py -> build/bdist.linux-x86_64/egg/openml
    creating build/bdist.linux-x86_64/egg/openml/tasks
    copying build/lib/openml/tasks/__init__.py -> build/bdist.linux-x86_64/egg/openml/tasks
    copying build/lib/openml/tasks/split.py -> build/bdist.linux-x86_64/egg/openml/tasks
    copying build/lib/openml/tasks/task.py -> build/bdist.linux-x86_64/egg/openml/tasks
    copying build/lib/openml/tasks/functions.py -> build/bdist.linux-x86_64/egg/openml/tasks
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_examples/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_examples/test_OpenMLDemo.py to test_OpenMLDemo.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_flows/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_flows/dummy_learn/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_flows/dummy_learn/dummy_forest.py to dummy_forest.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_flows/test_flow.py to test_flow.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_flows/test_flow_functions.py to test_flow_functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_runs/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_runs/test_run.py to test_run.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_runs/test_trace.py to test_trace.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_runs/test_run_functions.py to test_run_functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_utils/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_utils/test_utils.py to test_utils.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_extensions/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_extensions/test_sklearn_extension/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_extensions/test_sklearn_extension/test_sklearn_extension.py to test_sklearn_extension.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_extensions/test_functions.py to test_functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_setups/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_setups/test_setup_functions.py to test_setup_functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_datasets/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_datasets/test_dataset.py to test_dataset.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_datasets/test_dataset_functions.py to test_dataset_functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_openml/test_openml.py to test_openml.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_openml/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_openml/test_config.py to test_config.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_clustering_task.py to test_clustering_task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_regression_task.py to test_regression_task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_task_methods.py to test_task_methods.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_classification_task.py to test_classification_task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_task.py to test_task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_split.py to test_split.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_learning_curve_task.py to test_learning_curve_task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_supervised_task.py to test_supervised_task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/tests/test_tasks/test_task_functions.py to test_task_functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/evaluations/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/evaluations/evaluation.py to evaluation.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/evaluations/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/study/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/study/study.py to study.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/study/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/runs/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/runs/run.py to run.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/runs/trace.py to trace.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/runs/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/config.py to config.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/setups/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/setups/setup.py to setup.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/setups/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/datasets/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/datasets/data_feature.py to data_feature.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/datasets/dataset.py to dataset.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/datasets/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/_api_calls.py to _api_calls.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/__version__.py to __version__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/flows/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/flows/flow.py to flow.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/flows/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/utils.py to utils.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/exceptions.py to exceptions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/extensions/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/extensions/sklearn/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/extensions/sklearn/extension.py to extension.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/extensions/extension_interface.py to extension_interface.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/extensions/functions.py to functions.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/testing.py to testing.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/tasks/__init__.py to __init__.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/tasks/split.py to split.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/tasks/task.py to task.cpython-37.pyc
    byte-compiling build/bdist.linux-x86_64/egg/openml/tasks/functions.py to functions.cpython-37.pyc
    creating build/bdist.linux-x86_64/egg/EGG-INFO
    copying openml.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying openml.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying openml.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying openml.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    copying openml.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
    zip_safe flag not set; analyzing archive contents...
    openml.__pycache__.testing.cpython-37: module references __file__
    tests.test_examples.__pycache__.test_OpenMLDemo.cpython-37: module references __file__
    tests.test_extensions.__pycache__.test_functions.cpython-37: module MAY be using inspect.stack
    tests.test_extensions.test_sklearn_extension.__pycache__.test_sklearn_extension.cpython-37: module references __file__
    creating 'dist/openml-0.9.0-py3.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
    removing 'build/bdist.linux-x86_64/egg' (and everything under it)
    Processing openml-0.9.0-py3.7.egg
    creating /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/openml-0.9.0-py3.7.egg
    Extracting openml-0.9.0-py3.7.egg to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding openml 0.9.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/openml-0.9.0-py3.7.egg
    Processing dependencies for openml==0.9.0
    Searching for numpy>=1.6.2
    Reading https://pypi.org/simple/numpy/
    Downloading https://files.pythonhosted.org/packages/77/fe/fbf07df5c86d94b4874fd37ba3aef1189497494186e3af7890cce9fa103e/numpy-1.17.0rc1-cp37-cp37m-manylinux1_x86_64.whl#sha256=21b1a68dffca1af1936d35d40afbeda30e290ab2d398f6af6cc79bfa23e9957b
    Best match: numpy 1.17.0rc1
    Processing numpy-1.17.0rc1-cp37-cp37m-manylinux1_x86_64.whl
    Installing numpy-1.17.0rc1-cp37-cp37m-manylinux1_x86_64.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding numpy 1.17.0rc1 to easy-install.pth file
    Installing f2py script to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/bin
    Installing f2py3 script to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/bin
    Installing f2py3.7 script to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/bin
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/numpy-1.17.0rc1-py3.7-linux-x86_64.egg
    Searching for scipy>=0.13.3
    Reading https://pypi.org/simple/scipy/
    Downloading https://files.pythonhosted.org/packages/5d/bd/c0feba81fb60e231cf40fc8a322ed5873c90ef7711795508692b1481a4ae/scipy-1.3.0-cp37-cp37m-manylinux1_x86_64.whl#sha256=c5ea60ece0c0c1c849025bfc541b60a6751b491b6f11dd9ef37ab5b8c9041921
    Best match: scipy 1.3.0
    Processing scipy-1.3.0-cp37-cp37m-manylinux1_x86_64.whl
    Installing scipy-1.3.0-cp37-cp37m-manylinux1_x86_64.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    writing requirements to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/scipy-1.3.0-py3.7-linux-x86_64.egg/EGG-INFO/requires.txt
    Adding scipy 1.3.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/scipy-1.3.0-py3.7-linux-x86_64.egg
    Searching for pandas>=0.19.2
    Reading https://pypi.org/simple/pandas/
    Downloading https://files.pythonhosted.org/packages/0e/a8/d34b513e409fa0f8e5e35edfeab55d0c090b3e6095b16182585a4a0e2709/pandas-0.25.0rc0-cp37-cp37m-manylinux1_x86_64.whl#sha256=71c5a3d0d013f5825e1c45aa79ecd2c7cce8d47f7544a5916804fd0406c7e0b7
    Best match: pandas 0.25.0rc0
    Processing pandas-0.25.0rc0-cp37-cp37m-manylinux1_x86_64.whl
    Installing pandas-0.25.0rc0-cp37-cp37m-manylinux1_x86_64.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    writing requirements to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/pandas-0.25.0rc0-py3.7-linux-x86_64.egg/EGG-INFO/requires.txt
    Adding pandas 0.25.0rc0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/pandas-0.25.0rc0-py3.7-linux-x86_64.egg
    Searching for python-dateutil
    Reading https://pypi.org/simple/python-dateutil/
    Downloading https://files.pythonhosted.org/packages/41/17/c62faccbfbd163c7f57f3844689e3a78bae1f403648a6afb1d0866d87fbb/python_dateutil-2.8.0-py2.py3-none-any.whl#sha256=7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb
    Best match: python-dateutil 2.8.0
    Processing python_dateutil-2.8.0-py2.py3-none-any.whl
    Installing python_dateutil-2.8.0-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    writing requirements to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/python_dateutil-2.8.0-py3.7.egg/EGG-INFO/requires.txt
    Adding python-dateutil 2.8.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/python_dateutil-2.8.0-py3.7.egg
    Searching for scikit-learn>=0.18
    Reading https://pypi.org/simple/scikit-learn/
    Downloading https://files.pythonhosted.org/packages/21/a4/a48bd4b0d15395362b561df7e7247de87291105eb736a3b2aaffebf437b9/scikit_learn-0.21.2-cp37-cp37m-manylinux1_x86_64.whl#sha256=acba6bf5928e415b6296799a7aa069b66254c9440bce88ed2e5915865a317093
    Best match: scikit-learn 0.21.2
    Processing scikit_learn-0.21.2-cp37-cp37m-manylinux1_x86_64.whl
    Installing scikit_learn-0.21.2-cp37-cp37m-manylinux1_x86_64.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    writing requirements to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/scikit_learn-0.21.2-py3.7-linux-x86_64.egg/EGG-INFO/requires.txt
    Adding scikit-learn 0.21.2 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/scikit_learn-0.21.2-py3.7-linux-x86_64.egg
    Searching for requests
    Reading https://pypi.org/simple/requests/
    Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl#sha256=9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31
    Best match: requests 2.22.0
    Processing requests-2.22.0-py2.py3-none-any.whl
    Installing requests-2.22.0-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    writing requirements to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/requests-2.22.0-py3.7.egg/EGG-INFO/requires.txt
    Adding requests 2.22.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/requests-2.22.0-py3.7.egg
    Searching for xmltodict
    Reading https://pypi.org/simple/xmltodict/
    Downloading https://files.pythonhosted.org/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl#sha256=8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051
    Best match: xmltodict 0.12.0
    Processing xmltodict-0.12.0-py2.py3-none-any.whl
    Installing xmltodict-0.12.0-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding xmltodict 0.12.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/xmltodict-0.12.0-py3.7.egg
    Searching for liac-arff>=2.4.0
    Reading https://pypi.org/simple/liac-arff/
    Downloading https://files.pythonhosted.org/packages/e9/35/fbc9217cfa91d98888b43e1a19c03a50d716108c58494c558c65e308f372/liac-arff-2.4.0.tar.gz#sha256=47afcd1fd248b2892f66075987422d0576fc2c2fd0811d0cbd32f2135b065df5
    Best match: liac-arff 2.4.0
    Processing liac-arff-2.4.0.tar.gz
    Writing /tmp/easy_install-3tyja7ba/liac-arff-2.4.0/setup.cfg
    Running liac-arff-2.4.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-3tyja7ba/liac-arff-2.4.0/egg-dist-tmp-hyv1j_i2
    zip_safe flag not set; analyzing archive contents...
    Moving liac_arff-2.4.0-py3.7.egg to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding liac-arff 2.4.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/liac_arff-2.4.0-py3.7.egg
    Searching for pytz>=2017.2
    Reading https://pypi.org/simple/pytz/
    Downloading https://files.pythonhosted.org/packages/3d/73/fe30c2daaaa0713420d0382b16fbb761409f532c56bdcc514bf7b6262bb6/pytz-2019.1-py2.py3-none-any.whl#sha256=303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda
    Best match: pytz 2019.1
    Processing pytz-2019.1-py2.py3-none-any.whl
    Installing pytz-2019.1-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding pytz 2019.1 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/pytz-2019.1-py3.7.egg
    Searching for six>=1.5
    Reading https://pypi.org/simple/six/
    Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl#sha256=3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c
    Best match: six 1.12.0
    Processing six-1.12.0-py2.py3-none-any.whl
    Installing six-1.12.0-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding six 1.12.0 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/six-1.12.0-py3.7.egg
    Searching for joblib>=0.11
    Reading https://pypi.org/simple/joblib/
    Downloading https://files.pythonhosted.org/packages/cd/c1/50a758e8247561e58cb87305b1e90b171b8c767b15b12a1734001f41d356/joblib-0.13.2-py2.py3-none-any.whl#sha256=21e0c34a69ad7fde4f2b1f3402290e9ec46f545f15f1541c582edfe05d87b63a
    Best match: joblib 0.13.2
    Processing joblib-0.13.2-py2.py3-none-any.whl
    Installing joblib-0.13.2-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding joblib 0.13.2 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/joblib-0.13.2-py3.7.egg
    Searching for urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
    Reading https://pypi.org/simple/urllib3/
    Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl#sha256=b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1
    Best match: urllib3 1.25.3
    Processing urllib3-1.25.3-py2.py3-none-any.whl
    Installing urllib3-1.25.3-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    writing requirements to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/urllib3-1.25.3-py3.7.egg/EGG-INFO/requires.txt
    Adding urllib3 1.25.3 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/urllib3-1.25.3-py3.7.egg
    Searching for idna<2.9,>=2.5
    Reading https://pypi.org/simple/idna/
    Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl#sha256=ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c
    Best match: idna 2.8
    Processing idna-2.8-py2.py3-none-any.whl
    Installing idna-2.8-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding idna 2.8 to easy-install.pth file
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/idna-2.8-py3.7.egg
    Searching for chardet<3.1.0,>=3.0.2
    Reading https://pypi.org/simple/chardet/
    Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl#sha256=fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691
    Best match: chardet 3.0.4
    Processing chardet-3.0.4-py2.py3-none-any.whl
    Installing chardet-3.0.4-py2.py3-none-any.whl to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Adding chardet 3.0.4 to easy-install.pth file
    Installing chardetect script to /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/bin
    
    Installed /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages/chardet-3.0.4-py3.7.egg
    Searching for certifi==2019.6.16
    Best match: certifi 2019.6.16
    Adding certifi 2019.6.16 to easy-install.pth file
    
    Using /home/feurerm/miniconda/3-4.5.4/envs/testopenmlissue/lib/python3.7/site-packages
    Finished processing dependencies for openml==0.9.0
    

    If you guys agree, I suggest to replace the check to see if the wheel package is installed, and if not, refuse installation.

  6. PGijsbers commented on Jul 17, 2019

    @PGijsbers
    Collaborator

    Sorry I'm confused, why did

    (testopenmlissue) feurerm@mllap04:~/sync_dir/projects/openml/python$ python setup.py install
    Please install this package with pip: `pip install -e .` Installation requires pip>=10.0.
    running install
    .
    .
    

    not error out? Did you change to setup script to ignore it to see if it would fail(/build numpy)?

    But I guess it makes sense that we could check for wheel.

  7. mfeurer commented on Jul 17, 2019

    @mfeurer
    Collaborator

    not error out?

    I commented it out to see what happens. Sorry for not mentioning that.

  8. PGijsbers commented on Jul 17, 2019

    @PGijsbers
    Collaborator

    Ok, cool. Then it seems like it makes the most sense to just check for the wheel package indeed. I would be fine with that solution.

  9. pganssle commented on Jul 21, 2019

    @pganssle

    I think you may want to drop this requirement entirely, or replace it with a warning of some sort, plus strong documentation to not invoke setup.py install. We over at setuptools are trying to deprecate setup.py install and other direct invocations of setup.py, but it's been difficult for reasons like this - things that are doing the right thing but are implemented in terms of setup.py install (which is fine).

    I was originally thinking that adding a pyproject.toml with a build-system section (for PEP 517 support) might solve your problem somewhat, but I think it won't, particularly if you are using editable installs (I still think it's a good idea, just I can't think of a way to salvage the "error out when someone invoked setup.py install directly" behavior).

  10. mfeurer commented on Jul 22, 2019

    @mfeurer
    Collaborator

    Thanks for your comments @pganssle

    The original reason for prohibiting the invocation of setup.py install was to make sure that numpy, scipy and scikit-learn aren't compiled. This is most likely the product of a non-conda environment. I'm afraid that a warning won't do because an installation with setup.py install produces a long log in which the warning won't be easily visible.

    Potentially we should ask for confirmation by making the user type a yes?

    In any case, we should add a link to the docs to the error message.

  11. pganssle commented on Jul 22, 2019

    @pganssle

    @mfeurer The problem is that I don't think it's possible to do what you want to do, because there's no clear way to distinguish between direct and indirect invocations of setup.py install. Additionally, even pip install openml will end up building numpy from source if it's not already installed and no wheel is available for the platform the person is trying to build upon.

    The problem is that as long as you're not installing from a wheel (or installing in develop mode), setup.py install will be invoked.

    See:

    pip install --no-binary openml openml

    This will always fail. Using pip install -e is just sort of accidentally getting around the problem because it's invoking setup.py develop, which is probably more problematic than setup.py install!

    I think you should probably just give up on trying to stop your users from doing the wrong thing by accident, because you are likely to cause problems for people actually doing the right thing in the first place.

    Potentially we should ask for confirmation by making the user type a yes?

    This will almost certainly fail, because pip install may eat any outputs to sys.stdout, and will probably hard-fail on any inputs. pip install is not usually an interactive command.

    Like I said, what you are trying to do here is admirable, but if it were possible, we would have already done it in setuptools. The best thing you can do is to document that this is installed with pip install and not setup.py install, and that in some situations installation with conda will provide a smoother user experience.

  12. mfeurer commented on Jul 22, 2019

    @mfeurer
    Collaborator

    Thank you for your help and explanations @pganssle. What do you think of the solution of scikit-learn which checks itself that the libraries in question are installed?

    Anyway, I guess we'll better remove these lines again as they appear to cause more trouble than good.

  13. pganssle commented on Jul 22, 2019

    @pganssle

    @mfeurer I actually recommend removing as much logic as possible from your setup.py. Unless you need those libraries installed at build time (in which case they should go in pyproject.toml), I would recommend against checking for them in your setup.py.

    Generally speaking, you should think of your setup.py as a script that takes your project and turns it into a wheel to be installed, not as something that is to be executed in the target environment (assuming you can avoid it). This is useful because ideally your package (which in this case seems to be pure Python, so is very amenable to this) should be able to be "cross-compiled", which is to say that you can generate a universal (not python version or environment specific) wheel and publish that. In that case setup.py is only ever executed on the build machine.

    For a good overview of current python packaging, see Bernat Gabor's series of 3 articles on The State of Python Packaging.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions