pip - Installing specific package version does not work

MBT picture MBT · Aug 15, 2018 · Viewed 7.1k times · Source

I was trying to install a library (allennlp) via pip3. But it complained about the PyTorch version. While allennlp requires torch=0.4.0 I have torch=0.4.1:

...
Collecting torch==0.4.0 (from allennlp)
  Could not find a version that satisfies the requirement torch==0.4.0 (from allennlp) (from versions: 0.1.2, 0.1.2.post1, 0.4.1)
No matching distribution found for torch==0.4.0 (from allennlp)

Also manually install:

pip3 install torch==0.4.0

Doesn't work either:

  Could not find a version that satisfies the requirement torch==0.4.0 (from versions: 0.1.2, 0.1.2.post1, 0.4.1)
No matching distribution found for torch==0.4.0

Same for other versions.

Python is version Python 3.7.0 installed via brew on Mac OS.

I remember that some time ago I was able to switch between version 0.4.0 and 0.3.1 by using pip3 install torch==0.X.X.

How do I solve this?

Answer

wim picture wim · Aug 15, 2018

allennlp master branch specifies torch>=0.4.0,<0.5.0.

The latest release is v0.6.0 - released only about 3 hours ago - and also specifies this range: https://github.com/allenai/allennlp/blob/v0.6.0/setup.py#L104

It's possible you are using an older release (probably v0.51) which pinned torch==0.4.0: https://github.com/allenai/allennlp/blob/v0.5.1/setup.py#L104

torch have not yet released a v0.4.0 distribution supporting 3.7 to PyPI: there are wheels for CPython 2.7, 3.5, and 3.6. No source distributions.

allennlp==0.6.0 and torch==0.4.1post2 should work on Python 3.7. I was able to resolve the (considerably large) dependency tree on a linux/Python 3.7.0 runtime using my project johnnydep:

$ johnnydep allennlp --fields name version_latest_in_spec
name                                         version_latest_in_spec
-------------------------------------------  ------------------------
allennlp                                     0.6.0
├── awscli>=1.11.91                          1.15.78
│   ├── PyYAML<=3.13,>=3.10                  3.13
│   ├── botocore==1.10.77                    1.10.77
│   │   ├── docutils>=0.10                   0.14
│   │   ├── jmespath<1.0.0,>=0.7.1           0.9.3
│   │   └── python-dateutil<3.0.0,>=2.1      2.7.3
│   │       └── six>=1.5                     1.11.0
│   ├── colorama<=0.3.9,>=0.2.5              0.3.9
│   ├── docutils>=0.10                       0.14
│   ├── rsa<=3.5.0,>=3.1.2                   3.4.2
│   │   └── pyasn1>=0.1.3                    0.4.4
│   └── s3transfer<0.2.0,>=0.1.12            0.1.13
│       └── botocore<2.0.0,>=1.3.0           1.10.77
│           ├── docutils>=0.10               0.14
│           ├── jmespath<1.0.0,>=0.7.1       0.9.3
│           └── python-dateutil<3.0.0,>=2.1  2.7.3
│               └── six>=1.5                 1.11.0
├── cffi==1.11.2                             1.11.2
│   └── pycparser                            2.18
├── conllu==0.11                             0.11
├── editdistance                             0.4
├── flaky                                    3.4.0
├── flask-cors==3.0.3                        3.0.3
│   ├── Flask>=0.9                           1.0.2
│   │   ├── Jinja2>=2.10                     2.10
│   │   │   └── MarkupSafe>=0.23             1.0
│   │   ├── Werkzeug>=0.14                   0.14.1
│   │   ├── click>=5.1                       6.7
│   │   └── itsdangerous>=0.24               0.24
│   └── Six                                  1.11.0
├── flask==0.12.1                            0.12.1
│   ├── Jinja2>=2.4                          2.10
│   │   └── MarkupSafe>=0.23                 1.0
│   ├── Werkzeug>=0.7                        0.14.1
│   ├── click>=2.0                           6.7
│   └── itsdangerous>=0.21                   0.24
├── gevent==1.3.5                            1.3.5
│   └── greenlet>=0.4.13                     0.4.14
├── h5py                                     2.8.0
│   ├── numpy>=1.7                           1.15.0
│   └── six                                  1.11.0
├── jsonnet==0.10.0                          0.10.0
├── nltk                                     3.3.0
│   └── six                                  1.11.0
├── numpy                                    1.15.0
├── numpydoc==0.8.0                          0.8.0
│   ├── Jinja2>=2.3                          2.10
│   │   └── MarkupSafe>=0.23                 1.0
│   └── sphinx>=1.2.3                        1.7.6
│       ├── Jinja2>=2.3                      2.10
│       │   └── MarkupSafe>=0.23             1.0
│       ├── Pygments>=2.0                    2.2.0
│       ├── alabaster<0.8,>=0.7              0.7.11
│       ├── babel!=2.0,>=1.3                 2.6.0
│       │   └── pytz>=0a                     2018.5
│       ├── docutils>=0.11                   0.14
│       ├── imagesize                        1.0.0
│       ├── packaging                        17.1
│       │   ├── pyparsing>=2.0.2             2.2.0
│       │   └── six                          1.11.0
│       ├── requests>=2.0.0                  2.19.1
│       │   ├── certifi>=2017.4.17           2018.8.13
│       │   ├── chardet<3.1.0,>=3.0.2        3.0.4
│       │   ├── idna<2.8,>=2.5               2.7
│       │   └── urllib3<1.24,>=1.21.1        1.23
│       ├── setuptools                       40.0.0
│       ├── six>=1.5                         1.11.0
│       ├── snowballstemmer>=1.1             1.2.1
│       └── sphinxcontrib-websupport         1.1.0
├── overrides                                1.9
├── parsimonious==0.8.0                      0.8.0
│   └── six>=1.9.0                           1.11.0
├── pytest                                   3.7.1
│   ├── atomicwrites>=1.0                    1.1.5
│   ├── attrs>=17.4.0                        18.1.0
│   ├── more-itertools>=4.0.0                4.3.0
│   │   └── six<2.0.0,>=1.0.0                1.11.0
│   ├── pluggy>=0.7                          0.7.1
│   ├── py>=1.5.0                            1.5.4
│   ├── setuptools                           40.0.0
│   └── six>=1.10.0                          1.11.0
├── pytz==2017.3                             2017.3
├── requests>=2.18                           2.19.1
│   ├── certifi>=2017.4.17                   2018.8.13
│   ├── chardet<3.1.0,>=3.0.2                3.0.4
│   ├── idna<2.8,>=2.5                       2.7
│   └── urllib3<1.24,>=1.21.1                1.23
├── responses>=0.7                           0.9.0
│   ├── cookies                              2.2.1
│   ├── requests>=2.0                        2.19.1
│   │   ├── certifi>=2017.4.17               2018.8.13
│   │   ├── chardet<3.1.0,>=3.0.2            3.0.4
│   │   ├── idna<2.8,>=2.5                   2.7
│   │   └── urllib3<1.24,>=1.21.1            1.23
│   └── six                                  1.11.0
├── scikit-learn                             0.19.2
├── scipy                                    1.1.0
│   └── numpy>=1.8.2                         1.15.0
├── spacy<2.1,>=2.0                          2.0.12
│   ├── cymem<1.32,>=1.30                    1.31.2
│   ├── dill<0.3,>=0.2                       0.2.8.2
│   ├── murmurhash<0.29,>=0.28               0.28.0
│   ├── numpy>=1.7                           1.15.0
│   ├── plac<1.0.0,>=0.9.6                   0.9.6
│   ├── preshed<2.0.0,>=1.0.0                1.0.1
│   │   └── cymem<1.32.0,>=1.30              1.31.2
│   ├── regex==2017.4.5                      2017.4.5
│   ├── requests<3.0.0,>=2.13.0              2.19.1
│   │   ├── certifi>=2017.4.17               2018.8.13
│   │   ├── chardet<3.1.0,>=3.0.2            3.0.4
│   │   ├── idna<2.8,>=2.5                   2.7
│   │   └── urllib3<1.24,>=1.21.1            1.23
│   ├── thinc<6.11.0,>=6.10.3                6.10.3
│   │   ├── cymem<1.32.0,>=1.30.0            1.31.2
│   │   ├── cytoolz<0.10,>=0.9.0             0.9.0.1
│   │   │   └── toolz>=0.8.0                 0.9.0
│   │   ├── dill<0.3.0,>=0.2.7               0.2.8.2
│   │   ├── msgpack-numpy<1.0.0,>=0.4.1      0.4.3.1
│   │   │   ├── msgpack>=0.3.0               0.5.6
│   │   │   └── numpy>=1.9.0                 1.15.0
│   │   ├── msgpack<1.0.0,>=0.5.6            0.5.6
│   │   ├── murmurhash<0.29.0,>=0.28.0       0.28.0
│   │   ├── numpy>=1.7.0                     1.15.0
│   │   ├── plac<1.0.0,>=0.9.6               0.9.6
│   │   ├── preshed<2.0.0,>=1.0.0            1.0.1
│   │   │   └── cymem<1.32.0,>=1.30          1.31.2
│   │   ├── six<2.0.0,>=1.10.0               1.11.0
│   │   ├── tqdm<5.0.0,>=4.10.0              4.24.0
│   │   └── wrapt<1.11.0,>=1.10.0            1.10.11
│   └── ujson>=1.35                          1.35
├── tensorboardX==1.2                        1.2
│   ├── numpy                                1.15.0
│   ├── protobuf>=0.3.2                      3.6.1
│   │   ├── setuptools                       40.0.0
│   │   └── six>=1.9                         1.11.0
│   └── six                                  1.11.0
├── torch<0.5.0,>=0.4.0                      0.4.1.post2
├── tqdm>=4.19                               4.24.0
├── typing                                   3.6.4
└── unidecode                                1.0.22