Pip reinstalling wx after wheel installation - Ubuntu 18.04 Python 3.8

Hi,

I work on an open source project (CellProfiler) that utilizes wx4.1.0 on Python 3.8- as part of our installation instructions for Ubuntu 16.04, 18.04, and 20.04(can’t link due to new user-2 link max, but it’s the same as the other ones and can be found in our wiki sidebar), we advise users to go grab the pre-compiled wx wheel, pip install it, then pip install our software.

On Ubuntu 16 and 20 this seems to work great, but on Ubuntu 18 on now a couple separate machines, we’ve seen that pip ignores the compiled wheel and builds itself from scratch again instead, which takes a few hours.

Is this a known issue? Is there something else we should be advising our users to do? Ultimately it’s not the end of the world, but certainly if they can avoid a long install that’s best.

Is it possible that those machines where it failed have an architecture other than x86_64? (Try “uname -m” if unsure.)

I wish that were the case, and I’d just made a silly error, but sadly seems not to be the case- I’m currently using the public AWS ami “Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2020-09-03” (ami-06b263d6ceff0b3dd) - I don’t know specifics for the other user, other than 18.04.

uname -m

x86_64

Okay, I’ve got a couple more shots in the dark for you:

  1. Does it make any difference if you have pip do the downloading? Like this:

    python3.8 -m  pip install -U \
      -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04  \
      wxPython==4.1.0
    
  2. Does it make any difference if you do the install inside of a venv?

    python3.8 -m venv test38
    source test38/bin/activate
    pip install ...
    

Finally, if you add the -v flag to the pip install ... command it will show you lots of noise about all the links it finds and why each one is rejected. Digging through that might help shed some light on what is causing it to give up on the wheel file.

TL;dr, I think somehow the wheel is just not caching itself the way it’s supposed to outside of the venv; inside the venv, it works fine

  1. Nope, same issue.

Result of installing python3.8 -m pip install -v -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04 wxPython==4.1.0 below - I’ve cleaned out a lot of the “skipping link” lines. It claims to install fine.

ubuntu@ip-10-0-3-18:~$ python3.8 -m  pip install -v -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04  wxPython==4.1.0
Collecting wxPython==4.1.0
  2 location(s) to search for versions of wxPython:
  * https://pypi.python.org/simple/wxpython/
  * https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Skipping link https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04 (from -f); unsupported archive format: .04
  Getting page https://pypi.python.org/simple/wxpython/
  Looking up "https://pypi.python.org/simple/wxpython/" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://pypi.org/simple/wxpython/" in the cache
  Current age based on date: 117
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 117
  Analyzing links from page https://pypi.org/simple/wxpython/
    Found link https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl (from https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/), version: 4.1.0
    Skipping link https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl.asc (from https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/); unsupported archive format: .asc
  Using version 4.1.0 (newest of versions: 4.1.0)
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl" in the cache
  Current age based on date: 118
  Incremented Retry for (url='/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl'): Retry(total=4, connect=None, read=None, redirect=None, status=None)
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
  Starting new HTTPS connection (2): extras.wxpython.org
  https://extras.wxpython.org:443 "GET /wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl HTTP/1.1" 304 0
  Using cached https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
  Downloading from URL https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl (from https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/)
Collecting six (from wxPython==4.1.0)
  2 location(s) to search for versions of six:
  * https://pypi.python.org/simple/six/
  * https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Getting page https://pypi.python.org/simple/six/
  Looking up "https://pypi.python.org/simple/six/" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://pypi.org/simple/six/" in the cache
  Current age based on date: 111
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 111
  Analyzing links from page https://pypi.org/simple/six/
  Getting page https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/" in the cache
  No cache entry available
  Resetting dropped connection: extras.wxpython.org
  https://extras.wxpython.org:443 "GET /wxPython4/extras/linux/gtk3/ubuntu-18.04/ HTTP/1.1" 200 1208
  Updating cache with response from "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/"
  Analyzing links from page https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/
    Skipping link https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl (from https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/); wrong project name (not six)
  Using version 1.15.0 (newest of versions: 0.9.0, 0.9.1, 0.9.2, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.9.0, 1.10.0, 1.11.0, 1.12.0, 1.13.0, 1.14.0, 1.15.0)
  Looking up "https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl" in the cache
  Current age based on date: 242228
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 242228
  Using cached https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
  Downloading from URL https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl#sha256=8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced (from https://pypi.org/simple/six/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*)
Collecting numpy; python_version >= "3.0" (from wxPython==4.1.0)
  2 location(s) to search for versions of numpy:
  * https://pypi.python.org/simple/numpy/
  * https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Getting page https://pypi.python.org/simple/numpy/
  Looking up "https://pypi.python.org/simple/numpy/" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://pypi.org/simple/numpy/" in the cache
  Current age based on date: 110
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 110
  Analyzing links from page https://pypi.org/simple/numpy/
    Found link https://files.pythonhosted.org/packages/bf/e8/15aea783ea72e2d4e51e3ec365e8dc4a1a32c9e5eb3a6d695b0d58e67cdd/numpy-1.19.2.zip#sha256=0d310730e1e793527065ad7dde736197b705d0e4c9999775f212b03c44a8484c (from https://pypi.org/simple/numpy/) (requires-python:>=3.6), version: 1.19.2
  Getting page https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/" in the cache
  No cache entry available
  https://extras.wxpython.org:443 "GET /wxPython4/extras/linux/gtk3/ubuntu-18.04/ HTTP/1.1" 200 1208
  Updating cache with response from "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/"
  Analyzing links from page https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/
  Using version 1.19.2 (newest of versions: 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0.post2, 1.10.1, 1.10.2, 1.10.4, 1.11.0, 1.11.1, 1.11.2, 1.11.3, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 1.13.3, 1.14.0, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.14.5, 1.14.6, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.16.6, 1.17.0, 1.17.1, 1.17.2, 1.17.3, 1.17.4, 1.17.5, 1.18.0, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.19.0, 1.19.1, 1.19.2)
  Looking up "https://files.pythonhosted.org/packages/41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl" in the cache
  Current age based on date: 242231
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 242231
  Using cached https://files.pythonhosted.org/packages/41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl
  Downloading from URL https://files.pythonhosted.org/packages/41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl#sha256=cebd4f4e64cfe87f2039e4725781f6326a61f095bc77b3716502bed812b385a9 (from https://pypi.org/simple/numpy/) (requires-python:>=3.6)
Collecting pillow (from wxPython==4.1.0)
  2 location(s) to search for versions of pillow:
  * https://pypi.python.org/simple/pillow/
  * https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Getting page https://pypi.python.org/simple/pillow/
  Looking up "https://pypi.python.org/simple/pillow/" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://pypi.org/simple/pillow/" in the cache
  Current age based on date: 112
  Freshness lifetime from max-age: 600
  Freshness lifetime from request max-age: 600
  The response is "fresh", returning cached response
  600 > 112
  Analyzing links from page https://pypi.org/simple/pillow/
    Found link https://files.pythonhosted.org/packages/3e/02/b09732ca4b14405ff159c470a612979acfc6e8645dc32f83ea0129709f7a/Pillow-7.2.0.tar.gz#sha256=97f9e7953a77d5a70f49b9a48da7776dc51e9b738151b22dacf101641594a626 (from https://pypi.org/simple/pillow/) (requires-python:>=3.5), version: 7.2.0
  Getting page https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04" in the cache
  Returning cached "301 Moved Permanently" response (ignoring date and etag information)
  Looking up "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/" in the cache
  No cache entry available
  https://extras.wxpython.org:443 "GET /wxPython4/extras/linux/gtk3/ubuntu-18.04/ HTTP/1.1" 200 1208
  Updating cache with response from "https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/"
  Analyzing links from page https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/
  Using version 7.2.0 (newest of versions: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 1.7.7, 1.7.8, 2.0.0, 2.1.0, 2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.3.2, 2.4.0, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.6.0, 2.6.1, 2.6.2, 2.7.0, 2.8.0, 2.8.1, 2.8.2, 2.9.0, 3.0.0, 3.1.0, 3.1.1, 3.1.2, 3.2.0, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.4.0, 3.4.1, 3.4.2, 4.0.0, 4.1.0, 4.1.1, 4.2.0, 4.2.1, 4.3.0, 5.0.0, 5.1.0, 5.2.0, 5.3.0, 5.4.0, 5.4.1, 6.0.0, 6.1.0, 6.2.0, 6.2.1, 6.2.2, 7.0.0, 7.1.0, 7.1.1, 7.1.2, 7.2.0)
  Looking up "https://files.pythonhosted.org/packages/aa/12/a5e5e1b9bcd6c16eb4833069e6d586dc2b8ebbd3141a369cb1bdb9e4cc04/Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl" in the cache
  Current age based on date: 242230
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 242230
  Using cached https://files.pythonhosted.org/packages/aa/12/a5e5e1b9bcd6c16eb4833069e6d586dc2b8ebbd3141a369cb1bdb9e4cc04/Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl
  Downloading from URL https://files.pythonhosted.org/packages/aa/12/a5e5e1b9bcd6c16eb4833069e6d586dc2b8ebbd3141a369cb1bdb9e4cc04/Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl#sha256=d08b23fdb388c0715990cbc06866db554e1822c4bdcf6d4166cf30ac82df8c41 (from https://pypi.org/simple/pillow/) (requires-python:>=3.5)
Installing collected packages: six, numpy, pillow, wxPython


  changing mode of /home/ubuntu/.local/bin/f2py to 775
  changing mode of /home/ubuntu/.local/bin/f2py3 to 775
  changing mode of /home/ubuntu/.local/bin/f2py3.8 to 775


  changing mode of /home/ubuntu/.local/bin/helpviewer to 775
  changing mode of /home/ubuntu/.local/bin/img2png to 775
  changing mode of /home/ubuntu/.local/bin/img2py to 775
  changing mode of /home/ubuntu/.local/bin/img2xpm to 775
  changing mode of /home/ubuntu/.local/bin/pycrust to 775
  changing mode of /home/ubuntu/.local/bin/pyshell to 775
  changing mode of /home/ubuntu/.local/bin/pyslices to 775
  changing mode of /home/ubuntu/.local/bin/pyslicesshell to 775
  changing mode of /home/ubuntu/.local/bin/pywxrc to 775
  changing mode of /home/ubuntu/.local/bin/wxdemo to 775
  changing mode of /home/ubuntu/.local/bin/wxdocs to 775
  changing mode of /home/ubuntu/.local/bin/wxget to 775
Successfully installed numpy-1.19.2 pillow-7.2.0 six-1.15.0 wxPython-4.1.0
Cleaning up...

It claims it has installed fine

python3.8 -m pip freeze |grep wx
wxPython==4.1.0

But if I then try again

python3.8 -m pip install -v wxPython==4.1.0

it doesn’t just say “whoops, don’t need that, already have it”, it tries to build it again from the

To try to extra-enforce it uses the wheel, I cleared my pip cache

ubuntu@ip-10-0-3-18:~$ rm -rf ~/.cache/pip/wheels
ubuntu@ip-10-0-3-18:~$ rm -rf ~/.cache/pip/http

pip installed directly from the wheel

python3.8 -m  pip install -U   -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04    wxPython==4.1.0
Collecting wxPython==4.1.0
  Downloading https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl (133.2MB)
    100% |████████████████████████████████| 133.2MB 10kB/s 
Collecting pillow (from wxPython==4.1.0)
  Downloading https://files.pythonhosted.org/packages/aa/12/a5e5e1b9bcd6c16eb4833069e6d586dc2b8ebbd3141a369cb1bdb9e4cc04/Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl (2.2MB)
    100% |████████████████████████████████| 2.2MB 674kB/s 
Collecting numpy; python_version >= "3.0" (from wxPython==4.1.0)
  Downloading https://files.pythonhosted.org/packages/41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl (13.3MB)
    100% |████████████████████████████████| 13.4MB 107kB/s 
Collecting six (from wxPython==4.1.0)
  Downloading https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
Installing collected packages: pillow, numpy, six, wxPython
Successfully installed numpy-1.19.2 pillow-7.2.0 six-1.15.0 wxPython-4.1.0

Confirm that for numpy, the wheel is now in the cache and can be used to build

python3.8 -m pip install numpy==1.19.2
Collecting numpy==1.19.2
  Using cached https://files.pythonhosted.org/packages/41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl
Installing collected packages: numpy
^COperation cancelled by user

But if I try the same thing for wx, it goes for the source to try to rebuild from scratch.

python3.8 -m pip install wxPython==4.1.0
Collecting wxPython==4.1.0
  Downloading https://files.pythonhosted.org/packages/cb/4f/1e21d3c079c973ba862a18f3be73c2bbe2e6bc25c96d94df605b5cbb494d/wxPython-4.1.0.tar.gz (65.8MB)
    99% |████████████████████████████████| 65.8MB 72.6MB/s eta 0:00:01^C
Operation cancelled by user
  1. This works!
ubuntu@ip-10-0-3-18:~$ python3.8 -m venv test38
ubuntu@ip-10-0-3-18:~$ source test38/bin/activate
(test38) ubuntu@ip-10-0-3-18:~$ python3.8 -m pip freeze
pkg-resources==0.0.0
(test38) ubuntu@ip-10-0-3-18:~$ python3.8 -m  pip install -U \
>   -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04  \
>   wxPython==4.1.0
Collecting wxPython==4.1.0
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
  Using cached https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.1.0-cp38-cp38-linux_x86_64.whl
Collecting six (from wxPython==4.1.0)
  Using cached https://files.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl
Collecting numpy; python_version >= "3.0" (from wxPython==4.1.0)
  Using cached https://files.pythonhosted.org/packages/41/6e/919522a6e1d067ddb5959c5716a659a05719e2f27487695d2a539b51d66e/numpy-1.19.2-cp38-cp38-manylinux1_x86_64.whl
Collecting pillow (from wxPython==4.1.0)
  Using cached https://files.pythonhosted.org/packages/aa/12/a5e5e1b9bcd6c16eb4833069e6d586dc2b8ebbd3141a369cb1bdb9e4cc04/Pillow-7.2.0-cp38-cp38-manylinux1_x86_64.whl
Installing collected packages: six, numpy, pillow, wxPython
Successfully installed numpy-1.19.2 pillow-7.2.0 six-1.15.0 wxPython-4.1.0
(test38) ubuntu@ip-10-0-3-18:~$ python3.8 -m pip install cellprofiler
Collecting cellprofiler
  Using cached https://files.pythonhosted.org/packages/e5/c9/86a9e4e8fa010d0e42402c0ccc75d5967016881d47dd3312ed3295edf34a/CellProfiler-4.0.3-py3-none-any.whl
Collecting prokaryote==2.4.2 (from cellprofiler)
  Downloading https://files.pythonhosted.org/packages/c0/e2/a7579adf6e854040529ff65fa350a34eeb8598f1e5b26bb1635ebc7dabdd/prokaryote-2.4.2.tar.gz (54.8MB)
    100% |████████████████████████████████| 54.8MB 22kB/s 
Collecting scipy>=1.4.1 (from cellprofiler)
  Downloading https://files.pythonhosted.org/packages/8f/be/8625045311a3ed58af5f7ca8a51f20b1bbf72e288d34b48cc81cca550166/scipy-1.5.2-cp38-cp38-manylinux1_x86_64.whl (25.7MB)
    100% |████████████████████████████████| 25.7MB 52kB/s 
Requirement already satisfied: numpy>=1.18.2 in ./test38/lib/python3.8/site-packages (from cellprofiler)
Collecting mahotas>=1.4 (from cellprofiler)
  Downloading https://files.pythonhosted.org/packages/d9/b5/a601f54b670bf84cb2dca24ca56be2fc7bd8d86a3eb678579956c922981e/mahotas-1.4.11.tar.gz (1.5MB)
    100% |████████████████████████████████| 1.5MB 958kB/s 
Collecting joblib>=0.13 (from cellprofiler)
  Downloading https://files.pythonhosted.org/packages/51/dd/0e015051b4a27ec5a58b02ab774059f3289a94b0906f880a3f9507e74f38/joblib-0.16.0-py3-none-any.whl (300kB)
    100% |████████████████████████████████| 307kB 4.7MB/s 
Requirement already satisfied: wxPython>=4.1.0 in ./test38/lib/python3.8/site-packages (from cellprofiler)
Collecting sentry-sdk>=0.16.0 (from cellprofiler)