At this time, docutils
package on PyPI has different versions for Python 2 (0.15.post1
) and for Python 3 (0.15
).
When I try to install this package using Pipenv with Python 3, dependencies will lock successfully, however they will contain py2-specific version 0.15.post1
, which then fails to install. (Manually forcing version docutils==0.15
works, and pip install docutils
installs the correct version).
In a new folder, run pipenv install --three docutils
. Pipenv creates a new virtualenv and installs docutils
.
Package installation fails:
% rm -r ~/.cache/pipenv
% pipenv install --verbose --three docutils
Creating a virtualenv for this project…
Pipfile: /home/adam/tmp/reproducer/Pipfile
Using /usr/bin/python3 (3.7.3) to create virtualenv…
⠧ Creating virtual environment...Using base prefix '/usr'
New python executable in /home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/bin/python3
Also creating executable in /home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/bin/python
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter /usr/bin/python3
✔ Successfully created virtual environment!
Virtualenv location: /home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl
Creating a Pipfile for this project…
Installing docutils…
⠋ Installing...Installing 'docutils'
$ ['/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/bin/pip', 'install', '--verbose', '--upgrade', 'docutils', '-i', 'https://pypi.org/simple']
Adding docutils to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Using pip: -i https://pypi.org/simple
Using pip: -i https://pypi.org/simple
Using pip: -i https://pypi.org/simple
ROUND 1
Current constraints:
docutils
Finding the best candidates:
found candidate docutils==0.15.post1 (constraint was <any>)
Finding secondary dependencies:
docutils==0.15.post1 requires -
------------------------------------------------------------
Result of round 1: stable, done
Updated Pipfile.lock (c8fbe9)!
Installing dependencies from Pipfile.lock (c8fbe9)…
Installing 'docutils'▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:00:00
$ ['/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/bin/pip', 'install', '--verbose', '--upgrade', '--no-deps', '-r', '/tmp/pipenv-7ry13eyx-requirements/pipenv-_7eioysf-requirement.txt', '-i', 'https://pypi.org/simple', '--require-hashes']
Created temporary directory: /tmp/pip-ephem-wheel-cache-l_vczto7
Created temporary directory: /tmp/pip-req-tracker-_bavf9s6
Created requirements tracker '/tmp/pip-req-tracker-_bavf9s6'
Created temporary directory: /tmp/pip-install-pqe6tgxy
Collecting docutils==0.15.post1 (from -r /tmp/pipenv-7ry13eyx-requirements/pipenv-_7eioysf-requirement.txt (line 1))
1 location(s) to search for versions of docutils:
* https://pypi.org/simple/docutils/
Getting page https://pypi.org/simple/docutils/
Looking up "https://pypi.org/simple/docutils/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/docutils/ HTTP/1.1" 304 0
Analyzing links from page https://pypi.org/simple/docutils/
Found link https://files.pythonhosted.org/packages/3e/a3/381d27fae58a59915440374367712bf2442c3feda26d021263041b3809ba/docutils-0.3.tar.gz#sha256=13d4efb5c105a3440cfc2e4124a455016e9e117e2afda6bf3583142215dca988 (from https://pypi.org/simple/docutils/), version: 0.3
Found link https://files.pythonhosted.org/packages/b2/ff/5040ee72b3ec93fdeb6fec6c712f684d6811bebf87c413c651c47ab10580/docutils-0.3.5.tar.gz#sha256=45c53691e6ba7e96f60dfa6f93c012749d7d8068489419ef608766ad7f1a340f (from https://pypi.org/simple/docutils/), version: 0.3.5
Found link https://files.pythonhosted.org/packages/06/f0/ba91d2970562ac496a429c286006fac84c9f51b9296ad0d3a34b5cd0f923/docutils-0.3.7.tar.gz#sha256=a7a81c71caa36b4576f33f8ab2acb62e9fdf868345e8215f1d1b19d83fd7beb4 (from https://pypi.org/simple/docutils/), version: 0.3.7
Found link https://files.pythonhosted.org/packages/f0/a9/999787bf8b869b7ce2f7b5dd0f9fa1e77154875a8dd5ee0715768913b5b3/docutils-0.3.9.tar.gz#sha256=6b3cbd9b0fae3e2a7c7855e84a8cf9a5237fc2f52a946cbc669ccf7a72e6d1ab (from https://pypi.org/simple/docutils/), version: 0.3.9
Found link https://files.pythonhosted.org/packages/18/da/9e25e6178d452f1f47e6ca1bbd876038c9fd0df0a64d0a3db40c33071ad1/docutils-0.4.tar.gz#sha256=b81f29e4f39540d06c7d8c0dc1a2c209816c47ce33a66ac50ee28ae38d242c0e (from https://pypi.org/simple/docutils/), version: 0.4
Found link https://files.pythonhosted.org/packages/9d/21/3585fa6781b78b7fd7e257f64217188e97c775efd9f8c9bac90ced731bb7/docutils-0.5.tar.gz#sha256=747cf984edfca0575addbb42453274a1bdd98ec7780bd37a883dc8b2a66a610e (from https://pypi.org/simple/docutils/), version: 0.5
Found link https://files.pythonhosted.org/packages/3c/85/3bee168f7fb06c3a48e0af4f6b3d02cfee91dec3a89b116b532ddf819364/docutils-0.6.tar.gz#sha256=04aa91bd644169b23ed02d692f407a2a4e326fbfec9754bce7662fcf59c917f2 (from https://pypi.org/simple/docutils/), version: 0.6
Found link https://files.pythonhosted.org/packages/6a/30/3891cb6d713bae4dd578493944d5f78bf22b624e81ca76782d68fd6a0d01/docutils-0.7.tar.gz#sha256=cd8dc8e131813af9f4f1963f719611cccf23749dcf703f944bb4ac434393ea03 (from https://pypi.org/simple/docutils/), version: 0.7
Found link https://files.pythonhosted.org/packages/e5/c0/7f7089b6d380d5d78cb37f5cfd5457959dd79c9e696c37f817a6f24a29be/docutils-0.8.tar.gz#sha256=4aec93d5c3e00c56923751eb940ddd4942c191367e466f5c77cfdd49a9cacbf4 (from https://pypi.org/simple/docutils/), version: 0.8
Found link https://files.pythonhosted.org/packages/35/8b/b9168ac215c60c92df40fd78551757c3239235497533b74616bb156404aa/docutils-0.8.1.tar.gz#sha256=5a3b776518257a59fefaf48ef1e0635bc1179f8cafb02a9cc84c9644bb25df71 (from https://pypi.org/simple/docutils/), version: 0.8.1
Found link https://files.pythonhosted.org/packages/13/98/de4fe2d3b085a4f408ec80117489f32ed0564c6d15eca0cf4a45441d8052/docutils-0.9.tar.gz#sha256=ff49bf77e9135490a73740d884b418ab8b982ad16ee52cfe796d059c592ea245 (from https://pypi.org/simple/docutils/), version: 0.9
Found link https://files.pythonhosted.org/packages/d1/fd/e569a6139d5bfda5574b3a4bd840dd1b23d03fc7fcbb193bd1f450f98cc4/docutils-0.9.1.tar.gz#sha256=e89f187dbbc6674f839239c89fec44af9f18809b66a8a55a41b57b9ee2356994 (from https://pypi.org/simple/docutils/), version: 0.9.1
Found link https://files.pythonhosted.org/packages/66/40/2b11ec2ec96d527ef933332a5847cc90860fd8bbee46da2cc468794ea25b/docutils-0.10.tar.gz#sha256=370624e61b6773da2f2fb17cc2a4eaea4bb596c3585d13f75ff193c1c738603e (from https://pypi.org/simple/docutils/), version: 0.10
Found link https://files.pythonhosted.org/packages/7f/49/3ff69dcb212900199462a291886e2f30f57ab3a69dc88e31eda6404a17c0/docutils-0.11.tar.gz#sha256=9af4166adf364447289c5c697bb83c52f1d6f57e77849abcccd6a4a18a5e7ec9 (from https://pypi.org/simple/docutils/), version: 0.11
Found link https://files.pythonhosted.org/packages/c7/16/29d8de2404c5b90243b51f91315b3ce375169ceb48a68aeec0862e0143c4/docutils-0.12-py3-none-any.whl#sha256=dcebd4928112631626f4c4d0df59787c748404e66dda952110030ea883d3b8cd (from https://pypi.org/simple/docutils/), version: 0.12
Found link https://files.pythonhosted.org/packages/37/38/ceda70135b9144d84884ae2fc5886c6baac4edea39550f28bcd144c1234d/docutils-0.12.tar.gz#sha256=c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa (from https://pypi.org/simple/docutils/), version: 0.12
Skipping link https://files.pythonhosted.org/packages/5f/6d/e864b3c61b81eec57386ac62082fccfe694c7c3046d8723258a37da6d5fc/docutils-0.13.1-py2-none-any.whl#sha256=de454f1015958450b72641165c08afe7023cd7e3944396448f2fb1b0ccba9d77 (from https://pypi.org/simple/docutils/); it is not compatible with this Python
Found link https://files.pythonhosted.org/packages/7c/30/8fb30d820c012a6f701a66618ce065b6d61d08ac0a77e47fc7808dbaee47/docutils-0.13.1-py3-none-any.whl#sha256=cb3ebcb09242804f84bdbf0b26504077a054da6772c6f4d625f335cc53ebf94d (from https://pypi.org/simple/docutils/), version: 0.13.1
Found link https://files.pythonhosted.org/packages/05/25/7b5484aca5d46915493f1fd4ecb63c38c333bd32aa9ad6e19da8d08895ae/docutils-0.13.1.tar.gz#sha256=718c0f5fb677be0f34b781e04241c4067cbd9327b66bdd8e763201130f5175be (from https://pypi.org/simple/docutils/), version: 0.13.1
Found link https://files.pythonhosted.org/packages/05/fd/d62c2944d9df894b07eaa7430decc4c80977e644922a85fbdec337d6af82/docutils-0.14rc1.tar.gz#sha256=7ee93a6fbab0f46bdda4d94384de40a04bbbbb53dbd019ce0fbbbfed22f6589a (from https://pypi.org/simple/docutils/), version: 0.14rc1
Found link https://files.pythonhosted.org/packages/6b/57/6e68a5457ea9579f970d7854c090a6c991c8ab481df12e6be25ff505a4b0/docutils-0.14rc2.tar.gz#sha256=3caee0bcb2a49fdf24fcfa70849a60abb7a181aa68b030f7cb7494096181830c (from https://pypi.org/simple/docutils/), version: 0.14rc2
Skipping link https://files.pythonhosted.org/packages/50/09/c53398e0005b11f7ffb27b7aa720c617aba53be4fb4f4f3f06b9b5c60f28/docutils-0.14-py2-none-any.whl#sha256=7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6 (from https://pypi.org/simple/docutils/); it is not compatible with this Python
Found link https://files.pythonhosted.org/packages/36/fa/08e9e6e0e3cbd1d362c3bbee8d01d0aedb2155c4ac112b19ef3cae8eed8d/docutils-0.14-py3-none-any.whl#sha256=02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6 (from https://pypi.org/simple/docutils/), version: 0.14
Found link https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz#sha256=51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274 (from https://pypi.org/simple/docutils/), version: 0.14
Found link https://files.pythonhosted.org/packages/ca/83/812ae4de24209ef41e967fdb635d10a8ef2f7555dd510d3e562b707b2643/docutils-0.15-py3-none-any.whl#sha256=d2ddba74835cb090a1b627d3de4e7835c628d07ee461f7b4480f51af2fe4d448 (from https://pypi.org/simple/docutils/), version: 0.15
Skipping link https://files.pythonhosted.org/packages/d2/d8/06e83efbfafab5d342df8835f3aa81c1dbfadedbea39cc2d2f93742938a4/docutils-0.15.post1-py2-none-any.whl#sha256=ba4584f9107571ced0d2c7f56a5499c696215ba90797849c92d395979da68521 (from https://pypi.org/simple/docutils/); it is not compatible with this Python
Found link https://files.pythonhosted.org/packages/72/0b/d728058694261c99fd5980419d77e1c4d63a390b26a6a0ea7f0993cd5c57/docutils-0.15.tar.gz#sha256=54a349c622ff31c91cbec43b0b512f113b5b24daf00e2ea530bb1bd9aac14849 (from https://pypi.org/simple/docutils/), version: 0.15
ERROR: Could not find a version that satisfies the requirement docutils==0.15.post1 (from -r /tmp/pipenv-7ry13eyx-requirements/pipenv-_7eioysf-requirement.txt (line 1)) (from versions: 0.3, 0.3.5, 0.3.7, 0.3.9, 0.4, 0.5, 0.6, 0.7, 0.8, 0.8.1, 0.9, 0.9.1, 0.10, 0.11, 0.12, 0.13.1, 0.14rc1, 0.14rc2, 0.14, 0.15)
Cleaning up...
Removed build tracker '/tmp/pip-req-tracker-_bavf9s6'
ERROR: No matching distribution found for docutils==0.15.post1 (from -r /tmp/pipenv-7ry13eyx-requirements/pipenv-_7eioysf-requirement.txt (line 1))
Exception information:
Traceback (most recent call last):
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 178, in main
status = self.run(options, args)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 352, in run
resolver.resolve(requirement_set)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/resolve.py", line 131, in resolve
self._resolve_one(requirement_set, req)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/resolve.py", line 294, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/resolve.py", line 242, in _get_abstract_dist_for
self.require_hashes
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 282, in prepare_linked_requirement
req.populate_link(finder, upgrade_allowed, require_hashes)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/req/req_install.py", line 198, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/index.py", line 792, in find_requirement
'No matching distribution found for %s' % req
pip._internal.exceptions.DistributionNotFound: No matching distribution found for docutils==0.15.post1 (from -r /tmp/pipenv-7ry13eyx-requirements/pipenv-_7eioysf-requirement.txt (line 1))
An error occurred while installing docutils==0.15.post1 --hash=sha256:ba4584f9107571ced0d2c7f56a5499c696215ba90797849c92d395979da68521! Will try again.
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:00
Installing initially failed dependencies…
Installing 'docutils'▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:00:00
$ ['/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/bin/pip', 'install', '--verbose', '--upgrade', '--no-deps', '-r', '/tmp/pipenv-7ry13eyx-requirements/pipenv-y1ua0761-requirement.txt', '-i', 'https://pypi.org/simple', '--require-hashes']
Created temporary directory: /tmp/pip-ephem-wheel-cache-3y0jnshm
Created temporary directory: /tmp/pip-req-tracker-8kozur2y
Created requirements tracker '/tmp/pip-req-tracker-8kozur2y'
Created temporary directory: /tmp/pip-install-1nlwfuxf
Collecting docutils==0.15.post1 (from -r /tmp/pipenv-7ry13eyx-requirements/pipenv-y1ua0761-requirement.txt (line 1))
1 location(s) to search for versions of docutils:
* https://pypi.org/simple/docutils/
Getting page https://pypi.org/simple/docutils/
Looking up "https://pypi.org/simple/docutils/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/docutils/ HTTP/1.1" 304 0
Analyzing links from page https://pypi.org/simple/docutils/
Found link https://files.pythonhosted.org/packages/3e/a3/381d27fae58a59915440374367712bf2442c3feda26d021263041b3809ba/docutils-0.3.tar.gz#sha256=13d4efb5c105a3440cfc2e4124a455016e9e117e2afda6bf3583142215dca988 (from https://pypi.org/simple/docutils/), version: 0.3
Found link https://files.pythonhosted.org/packages/b2/ff/5040ee72b3ec93fdeb6fec6c712f684d6811bebf87c413c651c47ab10580/docutils-0.3.5.tar.gz#sha256=45c53691e6ba7e96f60dfa6f93c012749d7d8068489419ef608766ad7f1a340f (from https://pypi.org/simple/docutils/), version: 0.3.5
Found link https://files.pythonhosted.org/packages/06/f0/ba91d2970562ac496a429c286006fac84c9f51b9296ad0d3a34b5cd0f923/docutils-0.3.7.tar.gz#sha256=a7a81c71caa36b4576f33f8ab2acb62e9fdf868345e8215f1d1b19d83fd7beb4 (from https://pypi.org/simple/docutils/), version: 0.3.7
Found link https://files.pythonhosted.org/packages/f0/a9/999787bf8b869b7ce2f7b5dd0f9fa1e77154875a8dd5ee0715768913b5b3/docutils-0.3.9.tar.gz#sha256=6b3cbd9b0fae3e2a7c7855e84a8cf9a5237fc2f52a946cbc669ccf7a72e6d1ab (from https://pypi.org/simple/docutils/), version: 0.3.9
Found link https://files.pythonhosted.org/packages/18/da/9e25e6178d452f1f47e6ca1bbd876038c9fd0df0a64d0a3db40c33071ad1/docutils-0.4.tar.gz#sha256=b81f29e4f39540d06c7d8c0dc1a2c209816c47ce33a66ac50ee28ae38d242c0e (from https://pypi.org/simple/docutils/), version: 0.4
Found link https://files.pythonhosted.org/packages/9d/21/3585fa6781b78b7fd7e257f64217188e97c775efd9f8c9bac90ced731bb7/docutils-0.5.tar.gz#sha256=747cf984edfca0575addbb42453274a1bdd98ec7780bd37a883dc8b2a66a610e (from https://pypi.org/simple/docutils/), version: 0.5
Found link https://files.pythonhosted.org/packages/3c/85/3bee168f7fb06c3a48e0af4f6b3d02cfee91dec3a89b116b532ddf819364/docutils-0.6.tar.gz#sha256=04aa91bd644169b23ed02d692f407a2a4e326fbfec9754bce7662fcf59c917f2 (from https://pypi.org/simple/docutils/), version: 0.6
Found link https://files.pythonhosted.org/packages/6a/30/3891cb6d713bae4dd578493944d5f78bf22b624e81ca76782d68fd6a0d01/docutils-0.7.tar.gz#sha256=cd8dc8e131813af9f4f1963f719611cccf23749dcf703f944bb4ac434393ea03 (from https://pypi.org/simple/docutils/), version: 0.7
Found link https://files.pythonhosted.org/packages/e5/c0/7f7089b6d380d5d78cb37f5cfd5457959dd79c9e696c37f817a6f24a29be/docutils-0.8.tar.gz#sha256=4aec93d5c3e00c56923751eb940ddd4942c191367e466f5c77cfdd49a9cacbf4 (from https://pypi.org/simple/docutils/), version: 0.8
Found link https://files.pythonhosted.org/packages/35/8b/b9168ac215c60c92df40fd78551757c3239235497533b74616bb156404aa/docutils-0.8.1.tar.gz#sha256=5a3b776518257a59fefaf48ef1e0635bc1179f8cafb02a9cc84c9644bb25df71 (from https://pypi.org/simple/docutils/), version: 0.8.1
Found link https://files.pythonhosted.org/packages/13/98/de4fe2d3b085a4f408ec80117489f32ed0564c6d15eca0cf4a45441d8052/docutils-0.9.tar.gz#sha256=ff49bf77e9135490a73740d884b418ab8b982ad16ee52cfe796d059c592ea245 (from https://pypi.org/simple/docutils/), version: 0.9
Found link https://files.pythonhosted.org/packages/d1/fd/e569a6139d5bfda5574b3a4bd840dd1b23d03fc7fcbb193bd1f450f98cc4/docutils-0.9.1.tar.gz#sha256=e89f187dbbc6674f839239c89fec44af9f18809b66a8a55a41b57b9ee2356994 (from https://pypi.org/simple/docutils/), version: 0.9.1
Found link https://files.pythonhosted.org/packages/66/40/2b11ec2ec96d527ef933332a5847cc90860fd8bbee46da2cc468794ea25b/docutils-0.10.tar.gz#sha256=370624e61b6773da2f2fb17cc2a4eaea4bb596c3585d13f75ff193c1c738603e (from https://pypi.org/simple/docutils/), version: 0.10
Found link https://files.pythonhosted.org/packages/7f/49/3ff69dcb212900199462a291886e2f30f57ab3a69dc88e31eda6404a17c0/docutils-0.11.tar.gz#sha256=9af4166adf364447289c5c697bb83c52f1d6f57e77849abcccd6a4a18a5e7ec9 (from https://pypi.org/simple/docutils/), version: 0.11
Found link https://files.pythonhosted.org/packages/c7/16/29d8de2404c5b90243b51f91315b3ce375169ceb48a68aeec0862e0143c4/docutils-0.12-py3-none-any.whl#sha256=dcebd4928112631626f4c4d0df59787c748404e66dda952110030ea883d3b8cd (from https://pypi.org/simple/docutils/), version: 0.12
Found link https://files.pythonhosted.org/packages/37/38/ceda70135b9144d84884ae2fc5886c6baac4edea39550f28bcd144c1234d/docutils-0.12.tar.gz#sha256=c7db717810ab6965f66c8cf0398a98c9d8df982da39b4cd7f162911eb89596fa (from https://pypi.org/simple/docutils/), version: 0.12
Skipping link https://files.pythonhosted.org/packages/5f/6d/e864b3c61b81eec57386ac62082fccfe694c7c3046d8723258a37da6d5fc/docutils-0.13.1-py2-none-any.whl#sha256=de454f1015958450b72641165c08afe7023cd7e3944396448f2fb1b0ccba9d77 (from https://pypi.org/simple/docutils/); it is not compatible with this Python
Found link https://files.pythonhosted.org/packages/7c/30/8fb30d820c012a6f701a66618ce065b6d61d08ac0a77e47fc7808dbaee47/docutils-0.13.1-py3-none-any.whl#sha256=cb3ebcb09242804f84bdbf0b26504077a054da6772c6f4d625f335cc53ebf94d (from https://pypi.org/simple/docutils/), version: 0.13.1
Found link https://files.pythonhosted.org/packages/05/25/7b5484aca5d46915493f1fd4ecb63c38c333bd32aa9ad6e19da8d08895ae/docutils-0.13.1.tar.gz#sha256=718c0f5fb677be0f34b781e04241c4067cbd9327b66bdd8e763201130f5175be (from https://pypi.org/simple/docutils/), version: 0.13.1
Found link https://files.pythonhosted.org/packages/05/fd/d62c2944d9df894b07eaa7430decc4c80977e644922a85fbdec337d6af82/docutils-0.14rc1.tar.gz#sha256=7ee93a6fbab0f46bdda4d94384de40a04bbbbb53dbd019ce0fbbbfed22f6589a (from https://pypi.org/simple/docutils/), version: 0.14rc1
Found link https://files.pythonhosted.org/packages/6b/57/6e68a5457ea9579f970d7854c090a6c991c8ab481df12e6be25ff505a4b0/docutils-0.14rc2.tar.gz#sha256=3caee0bcb2a49fdf24fcfa70849a60abb7a181aa68b030f7cb7494096181830c (from https://pypi.org/simple/docutils/), version: 0.14rc2
Skipping link https://files.pythonhosted.org/packages/50/09/c53398e0005b11f7ffb27b7aa720c617aba53be4fb4f4f3f06b9b5c60f28/docutils-0.14-py2-none-any.whl#sha256=7a4bd47eaf6596e1295ecb11361139febe29b084a87bf005bf899f9a42edc3c6 (from https://pypi.org/simple/docutils/); it is not compatible with this Python
Found link https://files.pythonhosted.org/packages/36/fa/08e9e6e0e3cbd1d362c3bbee8d01d0aedb2155c4ac112b19ef3cae8eed8d/docutils-0.14-py3-none-any.whl#sha256=02aec4bd92ab067f6ff27a38a38a41173bf01bed8f89157768c1573f53e474a6 (from https://pypi.org/simple/docutils/), version: 0.14
Found link https://files.pythonhosted.org/packages/84/f4/5771e41fdf52aabebbadecc9381d11dea0fa34e4759b4071244fa094804c/docutils-0.14.tar.gz#sha256=51e64ef2ebfb29cae1faa133b3710143496eca21c530f3f71424d77687764274 (from https://pypi.org/simple/docutils/), version: 0.14
Found link https://files.pythonhosted.org/packages/ca/83/812ae4de24209ef41e967fdb635d10a8ef2f7555dd510d3e562b707b2643/docutils-0.15-py3-none-any.whl#sha256=d2ddba74835cb090a1b627d3de4e7835c628d07ee461f7b4480f51af2fe4d448 (from https://pypi.org/simple/docutils/), version: 0.15
Skipping link https://files.pythonhosted.org/packages/d2/d8/06e83efbfafab5d342df8835f3aa81c1dbfadedbea39cc2d2f93742938a4/docutils-0.15.post1-py2-none-any.whl#sha256=ba4584f9107571ced0d2c7f56a5499c696215ba90797849c92d395979da68521 (from https://pypi.org/simple/docutils/); it is not compatible with this Python
Found link https://files.pythonhosted.org/packages/72/0b/d728058694261c99fd5980419d77e1c4d63a390b26a6a0ea7f0993cd5c57/docutils-0.15.tar.gz#sha256=54a349c622ff31c91cbec43b0b512f113b5b24daf00e2ea530bb1bd9aac14849 (from https://pypi.org/simple/docutils/), version: 0.15
Cleaning up...
Removed build tracker '/tmp/pip-req-tracker-8kozur2y'
Exception information:
Traceback (most recent call last):
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 178, in main
status = self.run(options, args)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 352, in run
resolver.resolve(requirement_set)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/resolve.py", line 131, in resolve
self._resolve_one(requirement_set, req)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/resolve.py", line 294, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/resolve.py", line 242, in _get_abstract_dist_for
self.require_hashes
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 282, in prepare_linked_requirement
req.populate_link(finder, upgrade_allowed, require_hashes)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/req/req_install.py", line 198, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "/home/adam/.local/share/virtualenvs/reproducer-OJ9QCKUl/lib/python3.7/site-packages/pip/_internal/index.py", line 792, in find_requirement
'No matching distribution found for %s' % req
pip._internal.exceptions.DistributionNotFound: No matching distribution found for docutils==0.15.post1 (from -r /tmp/pipenv-7ry13eyx-requirements/pipenv-y1ua0761-requirement.txt (line 1))
Traceback (most recent call last):
File "/home/adam/.local/bin/pipenv", line 10, in <module>
sys.exit(cli())
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/cli/command.py", line 254, in install
editable_packages=state.installstate.editables,
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/core.py", line 1992, in do_install
skip_lock=skip_lock,
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/core.py", line 1253, in do_init
pypi_mirror=pypi_mirror,
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/core.py", line 859, in do_install_dependencies
retry_list, procs, failed_deps_queue, requirements_dir, **install_kwargs
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/core.py", line 763, in batch_install
_cleanup_procs(procs, not blocking, failed_deps_queue, retry=retry)
File "/home/adam/.local/lib/python3.7/site-packages/pipenv/core.py", line 681, in _cleanup_procs
raise exceptions.InstallError(c.dep.name, extra=err_lines)
pipenv.exceptions.InstallError: ERROR: ERROR: Package installation failed...
☤ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/1 — 00:00:00
mkdir test
cd test
pipenv install --three docutils
$ pipenv --support
Pipenv version: '2018.11.26'
Pipenv location: '/home/adam/.local/lib/python3.7/site-packages/pipenv'
Python location: '/usr/bin/python'
Python installations found:
3.7.3
: /usr/bin/python3
3.7.3
: /usr/bin/python3.7m
3.6.9
: /usr/bin/python3.6
3.6.9
: /usr/bin/python3.6m
2.7.16
: /usr/bin/python2
PEP 508 Information:
{'implementation_name': 'cpython',
'implementation_version': '3.7.3',
'os_name': 'posix',
'platform_machine': 'x86_64',
'platform_python_implementation': 'CPython',
'platform_release': '5.2.1-arch1-1-ARCH',
'platform_system': 'Linux',
'platform_version': '#1 SMP PREEMPT Sun Jul 14 14:52:52 UTC 2019',
'python_full_version': '3.7.3',
'python_version': '3.7',
'sys_platform': 'linux'}
System environment variables:
PATH
SSH_AUTH_SOCK
PAGER
SSH_AGENT_PID
LANG
LESS_TERMCAP_me
_JAVA_OPTIONS
MOZ_PLUGIN_PATH
WINDOWID
CUDA_PATH
SHLVL
GTK_CSD
LESS_TERMCAP_us
HOME
XDG_CONFIG_HOME
USER
OLDPWD
QT_AUTO_SCREEN_SCALE_FACTOR
DBUS_SESSION_BUS_ADDRESS
XDG_VTNR
XDG_SEAT
GTK_MODULES
LESS_TERMCAP_mb
CLOUDSDK_PYTHON_ARGS
LS_COLORS
LESS_TERMCAP_so
GTK_THEME
JOURNAL_STREAM
CLOUDSDK_ROOT_DIR
WINDOWPATH
MAIL
LOGNAME
GDK_DPI_SCALE
VTE_VERSION
LESS_TERMCAP_ue
XDG_RUNTIME_DIR
_
LESS_TERMCAP_se
SHELL
XDG_SESSION_TYPE
XDG_SESSION_ID
CLOUDSDK_PYTHON
GEM_HOME
EDITOR
GPG_TTY
INVOCATION_ID
LD_PRELOAD
XAUTHORITY
GOOGLE_CLOUD_SDK_HOME
COLORTERM
XDG_SESSION_CLASS
TERM
PWD
DISPLAY
LESS_TERMCAP_md
LC_MESSAGES
PIP_DISABLE_PIP_VERSION_CHECK
PYTHONDONTWRITEBYTECODE
PIP_SHIMS_BASE_MODULE
PIP_PYTHON_PATH
PYTHONFINDER_IGNORE_UNSUPPORTED
Pipenv–specific environment variables:
Debug–specific environment variables:
PATH
: /opt/google-cloud-sdk/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/adam/.cabal/bin:/home/adam/.gem/ruby/2.6.0/bin:/home/adam/.cabal/bin:/home/adam/.gem/ruby/2.6.0/bin:/home/adam/.local/bin
SHELL
: /bin/zsh
EDITOR
: vim
LANG
: en_US.UTF-8
PWD
: /home/adam/tmp/reproducer
Contents of Pipfile
('/home/adam/tmp/reproducer/Pipfile'):
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
docutils = "*"
[requires]
python_version = "3.7"
Contents of Pipfile.lock
('/home/adam/tmp/reproducer/Pipfile.lock'):
{
"_meta": {
"hash": {
"sha256": "889db584edefe8dd0ef05061f489014e51b666d5f9fe8c7c8b23724182c8fbe9"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.7"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"docutils": {
"hashes": [
"sha256:ba4584f9107571ced0d2c7f56a5499c696215ba90797849c92d395979da68521"
],
"index": "pypi",
"version": "==0.15.post1"
}
},
"develop": {}
}
In my case docutils
is not a direct dependency (my project -> twine
- > readme-renderer
-> docutils
) therefore pinning it to a specific version in Pipfile
(as a workaround) would give a false impression it is now a direct dependency of my project
I just ran into this problem myself, but workaround of pinning docutils to 0.15 is good enough for me right now.
I just ran into this problem myself, but workaround of pinning docutils to 0.15 is good enough for me right now.
You may have to re-run pipenv lock after pinning.
With the workaround to pin version to ==0.15
this problem can be resolved. Since it is an issue with the inconsistent release and there is not much pipenv can do unless hacking deep into the resolution process.
I'd like to close it for now. Feel free to reopen if you feel it is critical and can't be neglected.
I would like to request this issue to be reopened for the following reasons:
docutils
is not a direct dependency of my project. Including it in Pipfile
to pin its version would create a false impression, and a manual overhead in monitoring its version and resolving which version is the best for me during upgrade (which Pipenv should be doing).pip
, and also using poetry
. There is something wrong with the dependency resolution process of Pipenv, and it breaks projects which run pipenv lock
and (directly or indirectly) depend on docutils
.Sure, leave this issue open for more discussion.
Pipenv used a patched version of pip
for resolution, which causes the difference from original pip
or poetry
. The patch that makes this difference comes from a commit a year ago(4e906e4bc0df095ed3d61d4d283af02c76ec76d2), which allows incompatible versions to be counted. The patch is there to sort some problems out but I can't figure out what they are.
/cc @techalchemy for any background of the change and I wonder if we can revert this.
Ah, here it is #1586
From my understanding, it enables cross-version resolution. If we turn ignore_compatibility=True
then this kind of resolution will be broken.
Support for blacklisting specific versions as a separate config option would be nice.
Pinning (==0.15
) or blacklisting (!=015.post1
) a non-direct dependency in the [packages]
or [dev-packages]
sections is not the same, as it would mean Pipenv will keep installing that package even if other packages stop depending on it in the future.
Another option would be to exclude (perhaps as an option) package versions not available for all platforms when searching for the latest version. However, that would prevent projects which do not want to be cross-platform from installing a version of the package not available on the platform they don't care about.
This issue is not new, and while I understand the reasoning behind the current logic, I still think users should be given more control over the process.
indeed, the resolver should have ignored the post version (it is a preversion-like release, so should not be "seen" by default). But also if the package is not provided for the current architecture, the resolver should also ignore it.
Just from a user's perspective it is confusing that an installation running Python 3 is trying to pull a package version for which only a Python 2.x release exists.
IMHO Pipenv should ignore the 0.15.0post1 until a Python 3 compatible version is available.
I'd like to put more information about the logic behind this behavior, I am not saying it is right.
Pipenv tries to find the most recent release of a package, record hashes of all artifacts, whether compatible or not, into the lockfile. That is to say, resolver is not aware of which python is used when locking and assumes a release should provide artifacts for all platforms and pythons. When user installs package from the lock file, the installer will scan all hashes list there and pick a compatible one to install. This enables user to install under a different environment from what is used in development.
The problem is, the Pipenv resolver picks 0.15.0post1
, while it only contains a wheel for Py2. so the assumption in the above paragraph doesn't hold. This usually happens when the owner uploaded a broken artifact and re-uploaded with the fix.
Further more, .post{n}
isn't a prerelease version which will be ignored by Pipenv automatically. On PyPI, we can see it is list under 0.15.0
release page. I would say if we regard 0.15.0.post{n}
the same version as 0.15.0
, things will get resolved, because Pipenv can then lock 0.15.0.post1
and 0.15.0
hashes under the package meta.
hum, I don't understand the "resolver is not aware of which python is used when locking", it should be, or else it would not be able to respect the marker python_version < '3.5'
.
According to pep440, post
version are strongly discouraged.
The use of post-releases to publish maintenance releases containing actual bug fixes is strongly discouraged. In general, it is better to use a longer release number and increment the final component for each maintenance release.
Post-releases are also permitted for pre-releases:
X.YaN.postM # Post-release of an alpha release
X.YbN.postM # Post-release of a beta release
X.YrcN.postM # Post-release of a release candidate
I think post-version should be discarded like any real version. In any case, if the maintainer did a bad job on uploading the package, even official release, for example if the package for the current environment is broken, the resolver should try the version before to ensure the dev can continue working. Error happens.
@gsemet I read this differently. Post releases are discouraged for _maintenance releases containing actual bug fixes_. They are fine to use to fix broken wheels.
Indeed, but this shows package manager can upload release without all platforms... that’s disgusting but it existe
Post-release can be a separate release https://pypi.org/project/atoml/0.2.0.post0/ and a fixed artifact uploaded to the release version(docutils 0.15.0). From the /simple page, it is hard to make a decision what the post-release belongs to.
Docutils has made a new release with a universal source tarball for the post-release. So further installation won't fail.
I believe that this has been fixed - I removed the docutils= "==0.15"
pin from my project's Pipfile
and pipenv update
succeeds. docutils==0.15.2
now gets installed.
Most helpful comment
I would like to request this issue to be reopened for the following reasons:
docutils
is not a direct dependency of my project. Including it inPipfile
to pin its version would create a false impression, and a manual overhead in monitoring its version and resolving which version is the best for me during upgrade (which Pipenv should be doing).pip
, and also usingpoetry
. There is something wrong with the dependency resolution process of Pipenv, and it breaks projects which runpipenv lock
and (directly or indirectly) depend ondocutils
.