wellcometrust / reach

Wellcome tool to parse references scraped from policy documents using machine learning
MIT License
25 stars 4 forks source link

Support python3.8 #322

Open aCampello opened 4 years ago

aCampello commented 4 years ago

Perhaps not a critical issue, but we should consider if (when) we are going to add support to python3.8. At the moment, if python3 in your machine points to python3.8, make virtualenv fails.

We have a similar issue with other data science util packages, that use dependencies that break with 3.8.

Collecting psutil==5.6.3
  Using cached https://files.pythonhosted.org/packages/1c/ca/5b8c1fe032a458c2c4bcbe509d1401dca9dda35c7fc46b36bb81c2834740/psutil-5.6.3.tar.gz
Collecting psycopg2-binary==2.8.3
  Using cached https://files.pythonhosted.org/packages/80/91/91911be01869fa877135946f928ed0004e62044bdd876c1e0f12e1b5fb90/psycopg2-binary-2.8.3.tar.gz
    ERROR: Command errored out with exit status 1:
     command: /Users/campea/reach/build/virtualenv/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/setup.py'"'"'; __file__='"'"'/private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/pip-egg-info
         cwd: /private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/
    Complete output (23 lines):
    running egg_info
    creating /private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/pip-egg-info/psycopg2_binary.egg-info
    writing /private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/pip-egg-info/psycopg2_binary.egg-info/PKG-INFO
    writing dependency_links to /private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/pip-egg-info/psycopg2_binary.egg-info/dependency_links.txt
    writing top-level names to /private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/pip-egg-info/psycopg2_binary.egg-info/top_level.txt
    writing manifest file '/private/var/folders/b0/spk2lg9s2515qwbrg4dpj0g5c36t8_/T/pip-install-iqk4yz0s/psycopg2-binary/pip-egg-info/psycopg2_binary.egg-info/SOURCES.txt'

    Error: pg_config executable not found.

    pg_config is required to build psycopg2 from source.  Please add the directory
    containing pg_config to the $PATH or specify the full executable path with the
    option:

        python setup.py build_ext --pg-config /path/to/pg_config build ...

    or with the pg_config option in 'setup.cfg'.

    If you prefer to avoid building psycopg2 from source, please install the PyPI
    'psycopg2-binary' package instead.

    For further information please check the 'doc/src/install.rst' file (also at
    <http://initd.org/psycopg/docs/install.html>).

    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
jdu commented 4 years ago

The above isn't an error with python3.8 it's that psycopg2-binary requires that libpq or libpq-dev (or postgres itself) be installed on the machine in which you're installing psycopg2-binary. It needs it in order to configure against the library for connecting to postgres, so it's more that there's a hard dependency for a system library in order to build psycopg2-binary.