conda-forge / gunicorn-feedstock

A conda-smithy repository for gunicorn.
BSD 3-Clause "New" or "Revised" License
0 stars 13 forks source link

version 20.1.0 Python 3.8 support #27

Closed omaraltayyan closed 3 years ago

omaraltayyan commented 3 years ago

Issue:

installing gunicorn version 20.1.0 on python 3.8 doesn't work , only version 20.0.4 is working.

if it helps i am using docker image python:3.8.8-slim-buster, and these are the requirements i am trying to install

blinker==1.4
flask==1.1.2
gunicorn==20.1.0
psutil==5.8.0
rdkit==2020.09.5
sentry-sdk==0.20.3

this is the error message i receive:

``` UnsatisfiableError: The following specifications were found to be incompatible with the existing python installation in your environment: Specifications: - gunicorn==20.1.0 -> python[version='>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0'] Your python: python=3.8 If python is on the left-most side of the chain, that's the version you've asked for. When python appears to the right, that indicates that the thing on the left is somehow not available for the python version you are constrained to. Note that conda will not change your python version to a different minor version unless you explicitly specify that. The following specifications were found to be incompatible with each other: Output in format: Requested package -> Available versions Package _openmp_mutex conflicts for: psutil==5.8.0 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5'] python=3.8 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5'] rdkit==2020.09.5 -> libgcc-ng[version='>=9.3.0'] -> _openmp_mutex[version='>=4.5'] Package setuptools conflicts for: rdkit==2020.09.5 -> matplotlib-base -> setuptools gunicorn==20.1.0 -> setuptools[version='>=3.0'] flask==1.1.2 -> jinja2[version='>=2.10.1'] -> setuptools python=3.8 -> pip -> setuptools Package python_abi conflicts for: gunicorn==20.1.0 -> python_abi[version='3.6|3.6.*|3.7|3.9.*|3.7.*',build='*_cp37m|*_pypy36_pp73|*_pypy37_pp73|*_cp36m|*_cp39'] rdkit==2020.09.5 -> boost[version='>=1.74.0,<1.74.1.0a0'] -> python_abi[version='2.7.*|3.6|3.7',build='*_cp27mu|*_pypy37_pp73|*_pypy36_pp73'] gunicorn==20.1.0 -> setuptools[version='>=3.0'] -> python_abi=3.8[build=*_cp38] blinker==1.4 -> python -> python_abi[version='3.6|3.7',build='*_pypy37_pp73|*_pypy36_pp73'] psutil==5.8.0 -> python_abi[version='3.6|3.6.*|3.7|3.9.*|3.8.*|3.7.*',build='*_cp37m|*_cp38|*_pypy36_pp73|*_pypy37_pp73|*_cp36m|*_cp39'] sentry-sdk==0.20.3 -> certifi -> python_abi[version='2.7.*|3.6.*|3.6|3.7|3.7.*|3.9.*|3.8.*',build='*_cp27mu|*_cp38|*_cp39|*_cp37m|*_pypy37_pp73|*_pypy36_pp73|*_cp36m'] rdkit==2020.09.5 -> python_abi[version='3.6.*|3.8.*|3.9.*|3.7.*',build='*_cp37m|*_cp36m|*_cp38|*_cp39'] flask==1.1.2 -> python -> python_abi[version='3.6|3.7',build='*_pypy37_pp73|*_pypy36_pp73'] Package certifi conflicts for: sentry-sdk==0.20.3 -> certifi rdkit==2020.09.5 -> matplotlib-base -> certifi[version='>=2020.06.20'] gunicorn==20.1.0 -> setuptools[version='>=3.0'] -> certifi[version='>=2016.09|>=2016.9.26'] Package expat conflicts for: psutil==5.8.0 -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<3.0.0a0'] gunicorn==20.1.0 -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<3.0.0a0'] ```


Environment (conda list):

``` $ conda list # packages in environment at /opt/conda: # # Name Version Build Channel _libgcc_mutex 0.1 conda_forge conda-forge _openmp_mutex 4.5 1_gnu conda-forge brotlipy 0.7.0 py38h497a2fe_1001 conda-forge ca-certificates 2020.12.5 ha878542_0 conda-forge certifi 2020.12.5 py38h578d9bd_1 conda-forge cffi 1.14.5 py38ha65f79e_0 conda-forge chardet 4.0.0 py38h578d9bd_1 conda-forge conda 4.10.0 py38h578d9bd_0 conda-forge conda-package-handling 1.7.2 py38h8df0ef7_0 conda-forge cryptography 3.4.7 py38ha5dfef3_0 conda-forge idna 2.10 pyh9f0ad1d_0 conda-forge ld_impl_linux-64 2.35.1 hea4e1c9_2 conda-forge libffi 3.3 h58526e2_2 conda-forge libgcc-ng 9.3.0 h2828fa1_18 conda-forge libgomp 9.3.0 h2828fa1_18 conda-forge libstdcxx-ng 9.3.0 h6de172a_18 conda-forge ncurses 6.2 h58526e2_4 conda-forge openssl 1.1.1k h7f98852_0 conda-forge pip 21.0.1 pyhd8ed1ab_0 conda-forge pycosat 0.6.3 py38h497a2fe_1006 conda-forge pycparser 2.20 pyh9f0ad1d_2 conda-forge pyopenssl 20.0.1 pyhd8ed1ab_0 conda-forge pysocks 1.7.1 py38h578d9bd_3 conda-forge python 3.8.8 hffdb5ce_0_cpython conda-forge python_abi 3.8 1_cp38 conda-forge readline 8.0 he28a2e2_2 conda-forge requests 2.25.1 pyhd3deb0d_0 conda-forge ruamel_yaml 0.15.80 py38h497a2fe_1004 conda-forge setuptools 49.6.0 py38h578d9bd_3 conda-forge six 1.15.0 pyh9f0ad1d_0 conda-forge sqlite 3.35.3 h74cdb3f_0 conda-forge tk 8.6.10 h21135ba_1 conda-forge tqdm 4.59.0 pyhd8ed1ab_0 conda-forge urllib3 1.26.4 pyhd8ed1ab_0 conda-forge wheel 0.36.2 pyhd3deb0d_0 conda-forge xz 5.2.5 h516909a_1 conda-forge yaml 0.2.5 h516909a_0 conda-forge zlib 1.2.11 h516909a_1010 conda-forge ```


Details about conda and system ( conda info ):

``` $ conda info active environment : None user config file : /root/.condarc populated config files : /opt/conda/.condarc conda version : 4.10.0 conda-build version : not installed python version : 3.8.8.final.0 virtual packages : __linux=4.19.121=0 __glibc=2.28=0 __unix=0=0 __archspec=1=x86_64 base environment : /opt/conda (writable) conda av data dir : /opt/conda/etc/conda conda av metadata url : https://repo.anaconda.com/pkgs/main channel URLs : https://conda.anaconda.org/conda-forge/linux-64 https://conda.anaconda.org/conda-forge/noarch package cache : /opt/conda/pkgs /root/.conda/pkgs envs directories : /opt/conda/envs /root/.conda/envs platform : linux-64 user-agent : conda/4.10.0 requests/2.25.1 CPython/3.8.8 Linux/4.19.121-linuxkit debian/10 glibc/2.28 UID:GID : 0:0 netrc file : None offline mode : False ```
ocefpaf commented 3 years ago

Can you try to install those with mamba? It has some better conflict messages and will help us debug this. But probably something will need to be rebuilt with modern versions. I'm guessing rdkit b/c that one is quite complicated.

omaraltayyan commented 3 years ago

Can you try to install those with mamba? It has some better conflict messages and will help us debug this. But probably something will need to be rebuilt with modern versions. I'm guessing rdkit b/c that one is quite complicated.

Please note that rdkit has nothing to do with this, i tried disabling it, here's the message i received

#14 0.699 Collecting package metadata (current_repodata.json): ...working... done
#14 19.15 Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
#14 20.20 Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
#14 21.74 Collecting package metadata (repodata.json): ...working... done
#14 95.93 Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
#14 101.0 Solving environment: ...working...
#14 108.6 Found conflicts! Looking for incompatible packages.
#14 108.6 This can take several minutes.  Press CTRL-C to abort.
#14 110.4
Building graph of deps:   0%|          | 0/10 [00:00<?, ?it/s]
Examining @/linux-64::__glibc==2.28=0:   0%|          | 0/10 [00:00<?, ?it/s]
Examining blinker==1.4:  10%|â–ˆ         | 1/10 [00:00<00:00, 4686.37it/s]
Examining psutil==5.8.0:  20%|██        | 2/10 [00:00<00:00, 32.63it/s]
Examining @/linux-64::__archspec==1=x86_64:  30%|███       | 3/10 [00:00<00:00, 22.13it/s]
Examining @/linux-64::__archspec==1=x86_64:  40%|████      | 4/10 [00:00<00:00, 29.48it/s]
Examining flask==1.1.2:  40%|████      | 4/10 [00:00<00:00, 29.48it/s]
Examining @/linux-64::__unix==0=0:  50%|█████     | 5/10 [00:00<00:00, 29.48it/s]
Examining sentry-sdk==0.20.3:  60%|██████    | 6/10 [00:00<00:00, 29.48it/s]
Examining gunicorn==20.1.0:  70%|███████   | 7/10 [00:00<00:00, 29.48it/s]
Examining @/linux-64::__linux==4.19.121=0:  80%|████████  | 8/10 [00:00<00:00, 29.48it/s]
Examining @/linux-64::__linux==4.19.121=0:  90%|█████████ | 9/10 [00:00<00:00, 29.13it/s]
Examining python=3.8:  90%|█████████ | 9/10 [00:00<00:00, 29.13it/s]

Determining conflicts:   0%|          | 0/10 [00:00<?, ?it/s]
Examining conflict for blinker psutil flask sentry-sdk gunicorn python:   0%|          | 0/10 [00:00<?, ?it/s]
Examining conflict for blinker psutil flask sentry-sdk gunicorn:  10%|â–ˆ         | 1/10 [00:00<00:00, 14.41it/s]
Examining conflict for psutil gunicorn:  20%|██        | 2/10 [00:00<00:00, 11.85it/s]
Examining conflict for psutil gunicorn:  30%|███       | 3/10 [00:00<00:00, 17.76it/s]
Examining conflict for psutil python:  30%|███       | 3/10 [00:00<00:00, 17.76it/s]
Examining conflict for gunicorn flask python:  40%|████      | 4/10 [00:00<00:00, 17.76it/s]
Examining conflict for gunicorn flask python:  50%|█████     | 5/10 [00:00<00:00, 17.73it/s]
Examining conflict for gunicorn sentry-sdk:  50%|█████     | 5/10 [00:00<00:00, 17.73it/s]

failed
UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:
Specifications:
  - gunicorn==20.1.0 -> python[version='>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0']
Your python: python=3.8
If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.
The following specifications were found to be incompatible with each other:
Output in format: Requested package -> Available versions
Package pypy3.6 conflicts for:
psutil==5.8.0 -> python[version='>=3.6,<3.7.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*']
blinker==1.4 -> python -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*']
gunicorn==20.1.0 -> python[version='>=3.6,<3.7.0a0'] -> pypy3.6[version='7.3.*|7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.2|>=7.3.1']
flask==1.1.2 -> python -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*']
gunicorn==20.1.0 -> pypy3.6[version='>=7.3.3']
sentry-sdk==0.20.3 -> certifi -> pypy3.6[version='7.3.0.*|7.3.1.*|7.3.2.*|7.3.3.*|>=7.3.1|>=7.3.2|>=7.3.3']
psutil==5.8.0 -> pypy3.6[version='>=7.3.3']
Package expat conflicts for:
psutil==5.8.0 -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<3.0.0a0|>=2.3.0,<3.0a0']
gunicorn==20.1.0 -> pypy3.7[version='>=7.3.3'] -> expat[version='>=2.2.9,<3.0.0a0|>=2.3.0,<3.0a0']
Package _libgcc_mutex conflicts for:
python=3.8 -> libgcc-ng[version='>=9.3.0'] -> _libgcc_mutex[version='*|0.1',build='main|conda_forge']
psutil==5.8.0 -> libgcc-ng[version='>=9.3.0'] -> _libgcc_mutex==0.1=conda_forge
Package certifi conflicts for:
gunicorn==20.1.0 -> setuptools[version='>=3.0'] -> certifi[version='>=2016.09|>=2016.9.26']
sentry-sdk==0.20.3 -> certifi
Package setuptools conflicts for:
python=3.8 -> pip -> setuptools
gunicorn==20.1.0 -> setuptools[version='>=3.0']
flask==1.1.2 -> jinja2[version='>=2.10.1'] -> setuptools

if u read the gunicorn section, it says that gunicorn doesn't support python8

  - gunicorn==20.1.0 -> python[version='>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0']

(>=3.7,<3.8.0a0|>=3.9,<3.10.0a0) only python 3.7 up to and not including 3.8 alpha, and 3.9 up to and not including 3.10 alpha

omaraltayyan commented 3 years ago

i tried installing gunicorn on it's own, same thing happened

Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
Solving environment: ...working...
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.

Building graph of deps:   0%|          | 0/6 [00:00<?, ?it/s]
Examining @/linux-64::__glibc==2.28=0:   0%|          | 0/6 [00:00<?, ?it/s]
Examining @/linux-64::__unix==0=0:  17%|█▋        | 1/6 [00:00<00:00, 5857.97it/s]
Examining @/linux-64::__archspec==1=x86_64:  33%|███â–ژ      | 2/6 [00:00<00:00, 6927.01it/s]
Examining gunicorn==20.1.0:  50%|█████     | 3/6 [00:00<00:00, 7593.79it/s]
Examining @/linux-64::__linux==4.19.121=0:  67%|██████▋   | 4/6 [00:00<00:00, 37.25it/s]
Examining @/linux-64::__linux==4.19.121=0:  83%|████████â–ژ | 5/6 [00:00<00:00, 46.50it/s]
Examining python=3.8:  83%|████████â–ژ | 5/6 [00:00<00:00, 46.50it/s]

Determining conflicts:   0%|          | 0/6 [00:00<?, ?it/s]
Examining conflict for gunicorn python:   0%|          | 0/6 [00:00<?, ?it/s]

failed
UnsatisfiableError: The following specifications were found
to be incompatible with the existing python installation in your environment:
Specifications:
  - gunicorn==20.1.0 -> python[version='>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0']
Your python: python=3.8
If python is on the left-most side of the chain, that's the version you've asked for.
When python appears to the right, that indicates that the thing on the left is somehow
not available for the python version you are constrained to. Note that conda will not
change your python version to a different minor version unless you explicitly specify
that.
ocefpaf commented 3 years ago

You are probably installing it inside an environment that has something incompatible with that build of gunicorn. Try it in a fresh env:

conda create --name TEST gunicorn==20.1.0
omaraltayyan commented 3 years ago

Here's my docker file, This actually works without throwing errors

FROM python:3.8.9-slim-buster

ENV PYTHONUNBUFFERED 1

ARG MINIFORGE_VERSION=4.10.0-0
ARG TARGETPLATFORM

ENV CONDA_DIR=/opt/conda
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH=${CONDA_DIR}/bin:${PATH}

RUN apt-get update > /dev/null && \
    apt-get install --no-install-recommends --yes \
        wget bzip2 ca-certificates \
        git > /dev/null && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* && \
    wget --no-hsts --quiet https://github.com/conda-forge/miniforge/releases/download/${MINIFORGE_VERSION}/Miniforge3-${MINIFORGE_VERSION}-Linux-${TARGETPLATFORM}.sh -O /tmp/miniforge.sh && \
    /bin/bash /tmp/miniforge.sh -b -p ${CONDA_DIR} && \
    rm /tmp/miniforge.sh && \
    conda clean -tipsy && \
    find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \
    find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \
    conda clean -afy && \
    echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate base" >> /etc/skel/.bashrc && \
    echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate base" >> ~/.bashrc

RUN conda create --name TEST gunicorn==20.1.0

However just changing the last line to

RUN conda install -y gunicorn==20.1.0

Causes the same issue to appear again, what does creating an environment do that's different? does it install its own version of python for example?

This is the error message:

``` 0.351 Collecting package metadata (current_repodata.json): ...working... done 20.95 Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve. 21.70 Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source. 22.77 Collecting package metadata (repodata.json): ...working... done 97.85 Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve. 101.5 Solving environment: ...working... 108.2 Found conflicts! Looking for incompatible packages. 108.2 This can take several minutes. Press CTRL-C to abort. 108.3 Building graph of deps: 0%| | 0/6 [00:00 python[version='>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|>=3.9,<3.10.0a0'] 108.6 108.6 Your python: python=3.8 108.6 108.6 If python is on the left-most side of the chain, that's the version you've asked for. 108.6 When python appears to the right, that indicates that the thing on the left is somehow 108.6 not available for the python version you are constrained to. Note that conda will not 108.6 change your python version to a different minor version unless you explicitly specify 108.6 that. 108.6 108.6 108.6 ```
ocefpaf commented 3 years ago
RUN conda install -y gunicorn==20.1.0

Causes the same issue to appear again, what does creating an environment do that's different? does it install its own version of python for example?

The main different is that your docker image is probably bringing pre-installed packages that are incompatible with gunicorn. A new env is installing only gunicorn, so no incompatibilities.

omaraltayyan commented 3 years ago

Thanks!!