<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:1.2em 0px!important">Hello,</p>
<p style="margin:1.2em 0px!important">I’m working on specifying dependencies for a project (IPython) that are dependent on the Python implementation - we want to depend on a package on CPython, but not on PyPy. I see from PEPs <a href="https://www.python.org/dev/peps/pep-0345/">345</a> and <a href="https://www.python.org/dev/peps/pep-0426/#environment-markers">426</a> and <a href="https://www.python.org/dev/peps/pep-0496/">496</a> that this should be available as <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">platform_python_version</code> environment marker, but when I try to use this in setup.py, it fails, claiming this is an invalid marker (setuptools 18.3.1). I discovered that <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">pkg_resources</code> has its own <a href="https://bitbucket.org/pypa/setuptools/src/7a705b610abb1177ca169311c4ee261f3e4f0957/pkg_resources/__init__.py?at=18.3.1&fileviewer=file-view-default#__init__.py-1398">implementation of environment markers</a>, which isn’t consistent with any PEPs describing them. pip uses markerlib, which does seem to implement PEP 345 correctly. The relevant difference in this case is that <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">pkg_resources</code> misspells <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">platform_python_implementation</code> as <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">python_implementation</code>, but it is not the only one. Due to the inconsistent implementations, I don’t think there’s a way to use this environment marker anywhere. It seems like the whole concept of environment markers is experimental, and it would be premature to adopt them for any packages in production. Is this the case?</p>
<p style="margin:1.2em 0px!important">I found that when I run <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">pip install .</code>, the pkg_resources version is used, and it will balk at the correct <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">platform_python_version</code> as invalid. However, when I build a wheel and try to install it with <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">pip install ipython-...whl</code>, the pip version is used, and it balks at <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">pkg_resources</code> incorrect <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);border-radius:3px;display:inline;background-color:rgb(248,248,248)">python_implementation</code>. This conflict makes it impossible to use the marker, as far as I can tell. Has anyone been able to use the python implementation environment marker?</p>
<p style="margin:1.2em 0px!important">I have a <a href="https://bitbucket.org/pypa/setuptools/pull-requests/147/make-environment-markers-pep-345-compliant/diff">PR</a> to setuptools to fix what seems to be some inconsistency with the PEPs while preserving the misspelling for backward-compatibility, but it’s not clear which metadata/env marker PEPs setuptools and/or pip are meant to support at this point. It’s also unclear why pkg_resources has its own implementation, instead of all participants using the shared _markerlib, which would at least avoid inconsistency.</p>
<p style="margin:1.2em 0px!important">Thanks,<br>-MinRK</p>
<div title="MDH:SGVsbG8sPGRpdj48YnI+PC9kaXY+PGRpdj5JJ20gd29ya2luZyBvbiBzcGVjaWZ5aW5nIGRlcGVu
ZGVuY2llcyBmb3IgYSBwcm9qZWN0IChJUHl0aG9uKSB0aGF0IGFyZSBkZXBlbmRlbnQgb24gdGhl
IFB5dGhvbiBpbXBsZW1lbnRhdGlvbiAtIHdlIHdhbnQgdG8gZGVwZW5kIG9uIGEgcGFja2FnZSBv
biBDUHl0aG9uLCBidXQgbm90IG9uIFB5UHkuIEkgc2VlIGZyb20gUEVQcyBbMzQ1XShodHRwczov
L3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wMzQ1LykgYW5kIFs0MjZdKGh0dHBzOi8vd3d3
LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0MjYvI2Vudmlyb25tZW50LW1hcmtlcnMpIGFuZCBb
NDk2XShodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDk2LykgdGhhdCB0aGlz
IHNob3VsZCBiZSBhdmFpbGFibGUgYXMgYHBsYXRmb3JtX3B5dGhvbl92ZXJzaW9uYCBlbnZpcm9u
bWVudCBtYXJrZXIsIGJ1dCB3aGVuIEkgdHJ5IHRvIHVzZSB0aGlzIGluIHNldHVwLnB5LCBpdCBm
YWlscywgY2xhaW1pbmcgdGhpcyBpcyBhbiBpbnZhbGlkIG1hcmtlciAoc2V0dXB0b29scyAxOC4z
LjEpLiBJIGRpc2NvdmVyZWQgdGhhdCBgcGtnX3Jlc291cmNlc2AgaGFzIGl0cyBvd24gW2ltcGxl
bWVudGF0aW9uIG9mIGVudmlyb25tZW50IG1hcmtlcnNdKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9w
eXBhL3NldHVwdG9vbHMvc3JjLzdhNzA1YjYxMGFiYjExNzdjYTE2OTMxMWM0ZWUyNjFmM2U0ZjA5
NTcvcGtnX3Jlc291cmNlcy9fX2luaXRfXy5weT9hdD0xOC4zLjEmYW1wO2ZpbGV2aWV3ZXI9Zmls
ZS12aWV3LWRlZmF1bHQjX19pbml0X18ucHktMTM5OCksIHdoaWNoIGlzbid0IGNvbnNpc3RlbnQg
d2l0aCBhbnkgUEVQcyBkZXNjcmliaW5nIHRoZW0uIHBpcCB1c2VzIG1hcmtlcmxpYiwgd2hpY2gg
ZG9lcyBzZWVtIHRvIGltcGxlbWVudCBQRVAgMzQ1IGNvcnJlY3RseS4gVGhlIHJlbGV2YW50IGRp
ZmZlcmVuY2UgaW4gdGhpcyBjYXNlIGlzIHRoYXQgYHBrZ19yZXNvdXJjZXNgIG1pc3NwZWxscyBg
cGxhdGZvcm1fcHl0aG9uX2ltcGxlbWVudGF0aW9uYCBhcyBgcHl0aG9uX2ltcGxlbWVudGF0aW9u
YCwgYnV0IGl0IGlzIG5vdCB0aGUgb25seSBvbmUuIER1ZSB0byB0aGUgaW5jb25zaXN0ZW50IGlt
cGxlbWVudGF0aW9ucywgSSBkb24ndCB0aGluayB0aGVyZSdzIGEgd2F5IHRvIHVzZSB0aGlzIGVu
dmlyb25tZW50IG1hcmtlciBhbnl3aGVyZS4gSXQgc2VlbXMgbGlrZSB0aGUgd2hvbGUgY29uY2Vw
dCBvZiBlbnZpcm9ubWVudCBtYXJrZXJzIGlzIGV4cGVyaW1lbnRhbCwgYW5kIGl0IHdvdWxkIGJl
IHByZW1hdHVyZSB0byBhZG9wdCB0aGVtIGZvciBhbnkgcGFja2FnZXMgaW4gcHJvZHVjdGlvbi4g
SXMgdGhpcyB0aGUgY2FzZT88L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkkgZm91bmQgdGhhdCB3
aGVuIEkgcnVuIGBwaXAgaW5zdGFsbCAuYCwgdGhlIHBrZ19yZXNvdXJjZXMgdmVyc2lvbiBpcyB1
c2VkLCBhbmQgaXQgd2lsbCBiYWxrIGF0IHRoZSBjb3JyZWN0IGBwbGF0Zm9ybV9weXRob25fdmVy
c2lvbmAgYXMgaW52YWxpZC4gSG93ZXZlciwgd2hlbiBJIGJ1aWxkIGEgd2hlZWwgYW5kIHRyeSB0
byBpbnN0YWxsIGl0IHdpdGggYHBpcCBpbnN0YWxsIGlweXRob24tLi4ud2hsYCwgdGhlIHBpcCB2
ZXJzaW9uIGlzIHVzZWQsIGFuZCBpdCBiYWxrcyBhdCBgcGtnX3Jlc291cmNlc2AgaW5jb3JyZWN0
IGBweXRob25faW1wbGVtZW50YXRpb25gLiBUaGlzIGNvbmZsaWN0IG1ha2VzIGl0IGltcG9zc2li
bGUgdG8gdXNlIHRoZSBtYXJrZXIsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLiBIYXMgYW55b25lIGJl
ZW4gYWJsZSB0byB1c2UgdGhlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBlbnZpcm9ubWVudCBtYXJr
ZXI/PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5JIGhhdmUgYSBbUFJdKGh0dHBzOi8vYml0YnVj
a2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvcHVsbC1yZXF1ZXN0cy8xNDcvbWFrZS1lbnZpcm9ubWVu
dC1tYXJrZXJzLXBlcC0zNDUtY29tcGxpYW50L2RpZmYpIHRvIHNldHVwdG9vbHMgdG8gZml4IHdo
YXQgc2VlbXMgdG8gYmUgc29tZSBpbmNvbnNpc3RlbmN5IHdpdGggdGhlIFBFUHMgd2hpbGUgcHJl
c2VydmluZyB0aGUgbWlzc3BlbGxpbmcgZm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHksIGJ1dCBp
dCdzIG5vdCBjbGVhciB3aGljaCBtZXRhZGF0YS9lbnYgbWFya2VyIFBFUHMgc2V0dXB0b29scyBh
bmQvb3IgcGlwIGFyZSBtZWFudCB0byBzdXBwb3J0IGF0IHRoaXMgcG9pbnQuIEl0J3MgYWxzbyB1
bmNsZWFyIHdoeSBwa2dfcmVzb3VyY2VzIGhhcyBpdHMgb3duIGltcGxlbWVudGF0aW9uLCBpbnN0
ZWFkIG9mIGFsbCBwYXJ0aWNpcGFudHMgdXNpbmcgdGhlIHNoYXJlZCBfbWFya2VybGliLCB3aGlj
aCB3b3VsZCBhdCBsZWFzdCBhdm9pZCBpbmNvbnNpc3RlbmN5LjwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+VGhhbmtzLDwvZGl2PjxkaXY+LU1pblJLPC9kaXY+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>