plain-summer-72727
09/06/2022, 11:15 PM[ERROR] ResolveError: Failed to resolve requirements from PEX environment @ /app.
Needed cp38-cp38-manylinux_2_26_x86_64 compatible dependencies for:
1: pillow>=6.2.0
Required by:
matplotlib 3.5.1
But this pex had no ProjectName(raw='pillow', normalized='pillow') distributions.
2: pillow~=9.2.0
raise ResolveError(/pex/environment.py", line 589, in resolve_distsp_pex_envions.
I have pillow ~= 9.2.0
and matplotlib==3.5.1
as dependencies in my requirements.txt file. When I build my Lambda pacakge locally, I see Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl
in my .deps directory. I figured Pillow ~= 9.2.0 would match matplotlib's Pillow version requirements? What am I doing wrong?enough-analyst-54434
09/06/2022, 11:21 PMNeeded cp38-cp38-manylinux_2_26_x86_64 compatible dependencies
vs `Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl`sounds like a prolem to me. That's needs glibc 2.26 compatibility but has glibc 2.28 compatibility.enough-analyst-54434
09/06/2022, 11:22 PMpython_awslambda
target?plain-summer-72727
09/06/2022, 11:22 PMpython_awslambda(
name="lambda",
runtime="python3.8",
handler="handler.py:handler",
)
enough-analyst-54434
09/06/2022, 11:28 PMruntime
parameter and use `complete_platforms`instead: https://www.pantsbuild.org/docs/reference-python_awslambda#codecomplete_platformscode
That means you'll need to:
1. Get your hands on the target AWS image so you can run some commands to come up with a complete platform description of the machine.
2. Then take the JSON blob from 2 and check it in to your repo with a file
target owning it that the `python_awslambda`can refer to.enough-analyst-54434
09/06/2022, 11:29 PMenough-analyst-54434
09/06/2022, 11:29 PMenough-analyst-54434
09/06/2022, 11:29 PMplain-summer-72727
09/06/2022, 11:39 PMcomplete_platforms
?enough-analyst-54434
09/06/2022, 11:51 PMplain-summer-72727
09/07/2022, 12:03 AMpython_awslambda(
name="lambda",
# runtime="python3.8",
handler="handler.py:handler",
complete_platforms=['{"marker_environment": "python_version >= '3.8'","compatible_tags": ["cp38-cp38-manylinux_2_26_x86_64"]}'],
)
enough-analyst-54434
09/07/2022, 12:06 AMpex3
command described in https://pex.readthedocs.io/en/latest/buildingpex.html#complete-platformenough-analyst-54434
09/07/2022, 12:06 AMenough-analyst-54434
09/07/2022, 12:09 AMfile(name="aws-3.8-cp", source="aws-3.8-cp.json")
python_awslambda(
...
complete_platforms=[":aws-3.8-cp"],
)
plain-summer-72727
09/07/2022, 12:23 AM{
"path": "/var/lang/bin/python3.8",
"compatible_tags": [
"cp38-cp38-manylinux_2_26_x86_64",
"cp38-cp38-manylinux_2_25_x86_64",
"cp38-cp38-manylinux_2_24_x86_64",
"cp38-cp38-manylinux_2_23_x86_64",
"cp38-cp38-manylinux_2_22_x86_64",
"cp38-cp38-manylinux_2_21_x86_64",
"cp38-cp38-manylinux_2_20_x86_64",
"cp38-cp38-manylinux_2_19_x86_64",
...
I updated the BUILD file accordingly:
python_awslambda(
name="lambda",
handler="handler.py:handler",
complete_platforms=[":aws-38-cp"],
)
...
file(name="aws-38-cp", source="aws-38-cp.json")
But I'm still seeing the same issue unfortunately. I see that the highest-compatible tag is cp38-cp38-manylinux_2_26_x86_64
in the JSON, while Pillow expects 2.28. Is there something I can do to resolve this?enough-analyst-54434
09/07/2022, 12:25 AMenough-analyst-54434
09/07/2022, 12:27 AMcp38-cp38-manylinux_2_17_x86_64
and / or cp38-cp38-manylinux2014_x86_64
tags are in your JSON 1st.plain-summer-72727
09/07/2022, 12:29 AM{
"path": "/var/lang/bin/python3.8",
"compatible_tags": [
"cp38-cp38-manylinux_2_26_x86_64",
"cp38-cp38-manylinux_2_25_x86_64",
"cp38-cp38-manylinux_2_24_x86_64",
"cp38-cp38-manylinux_2_23_x86_64",
"cp38-cp38-manylinux_2_22_x86_64",
"cp38-cp38-manylinux_2_21_x86_64",
"cp38-cp38-manylinux_2_20_x86_64",
"cp38-cp38-manylinux_2_19_x86_64",
"cp38-cp38-manylinux_2_18_x86_64",
"cp38-cp38-manylinux_2_17_x86_64",
"cp38-cp38-manylinux2014_x86_64",
"cp38-cp38-manylinux_2_16_x86_64",
"cp38-cp38-manylinux_2_15_x86_64",
"cp38-cp38-manylinux_2_14_x86_64",
"cp38-cp38-manylinux_2_13_x86_64",
"cp38-cp38-manylinux_2_12_x86_64",
"cp38-cp38-manylinux2010_x86_64",
"cp38-cp38-manylinux_2_11_x86_64",
"cp38-cp38-manylinux_2_10_x86_64",
Do I need to destroy a cache somewhere in order for this change to propagate?enough-analyst-54434
09/07/2022, 12:30 AMenough-analyst-54434
09/07/2022, 12:30 AM--no-local-cache
though - it will be slow.plain-summer-72727
09/07/2022, 12:35 AMcompatible_tags
list just in case order matters (in a truly desperate move)enough-analyst-54434
09/07/2022, 12:37 AMplain-summer-72727
09/07/2022, 12:39 AMPillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl
. I also tried settings compatible_tags
to just one value, cp38-cp38-manylinux_2_17_x86_64
, with hope that it would "force-pull" the compatible Pillow whl, but it still resulted in 2_28.enough-analyst-54434
09/07/2022, 12:41 AM./pants ...
command if you add -ldebug
- if you can share that.plain-summer-72727
09/07/2022, 12:45 AM17:44:27.30 [DEBUG] acquiring lock: <pants.pantsd.lock.OwnerPrintingInterProcessFileLock object at 0x7f8d726c0df0>
17:44:27.30 [DEBUG] releasing lock: <pants.pantsd.lock.OwnerPrintingInterProcessFileLock object at 0x7f8d726c0df0>
17:44:27.30 [DEBUG] Connecting to pantsd on port 37733
17:44:27.30 [DEBUG] Connecting to pantsd on port 37733 attempt 1/3
17:44:27.30 [DEBUG] Connected to pantsd
17:44:27.31 [DEBUG] Launching 1 roots (poll=false).
17:44:27.31 [DEBUG] Dependency SessionValues of Some("@rule(pants.engine.internals.options_parsing.parse_options())") changed.
17:44:27.32 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.32 [DEBUG] computed 1 nodes in 0.008025 seconds. there are 7 total nodes.
17:44:27.35 [DEBUG] Launching 1 roots (poll=false).
17:44:27.35 [DEBUG] computed 1 nodes in 0.000466 seconds. there are 7 total nodes.
17:44:27.38 [DEBUG] specs are: Specs(address_specs=AddressSpecs(literals=(), globs=(), filter_by_global_options=True), filesystem_specs=FilesystemSpecs(file_includes=(FileLiteralSpec(file='src/cort/handler.py'),), dir_includes=(), ignores=()), from_change_detection=False)
17:44:27.38 [DEBUG] changed_options are: ChangedOptions(since=None, diffspec=None, dependees=<DependeesOption.NONE: 'none'>)
17:44:27.38 [DEBUG] Launching 1 roots (poll=false).
17:44:27.38 [DEBUG] Dependency SessionValues of Some("@rule(pants.engine.internals.options_parsing.parse_options())") changed.
17:44:27.38 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.38 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.38 [DEBUG] computed 1 nodes in 0.001720 seconds. there are 19920 total nodes.
17:44:27.38 [DEBUG] requesting <class 'pants.core.goals.package.Package'> to satisfy execution of `package` goal
17:44:27.38 [DEBUG] Launching 1 roots (poll=false).
17:44:27.38 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.38 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.40 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.40 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.40 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.40 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.40 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.41 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.41 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.41 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.41 [DEBUG] Dependency @rule(pants.engine.internals.options_parsing.parse_options()) of Some("@rule(pants.engine.internals.options_parsing.scope_options())") changed.
17:44:27.41 [DEBUG] Dependency SessionValues of Some("@rule(pants.engine.environment.environment_subset())") changed.
17:44:27.41 [DEBUG] Dependency SessionValues of Some("@rule(pants.engine.environment.environment_subset())") changed.
17:44:27.73 [INFO] Wrote dist/src.cort/lambda.zip
Complete platform: src/cort/aws-38-cp.json
Handler: lambdex_handler.handler
17:44:27.73 [DEBUG] Completed: `package` goal
17:44:27.73 [DEBUG] computed 1 nodes in 0.353665 seconds. there are 19922 total nodes.
enough-analyst-54434
09/07/2022, 12:47 AM-ldebug --no-local-cache
- the interesting bits are skipped there.plain-summer-72727
09/07/2022, 12:49 AMenough-analyst-54434
09/07/2022, 12:51 AMrequirements-lock.txt
- what hashes of pillow does it have locked?enough-analyst-54434
09/07/2022, 12:51 AMplain-summer-72727
09/07/2022, 1:03 AM./pants generate-lockfiles
to generate the lockfile. No Poetry on our end. This is what our pants.toml looks like:
...
[python]
enable_resolves = true
interpreter_constraints = ['CPython>=3.8,<4']
default_resolve = 'python-default'
[python.resolves]
python-default = "requirements-lock.txt"
...
Looking at requirements-lock.txt, we see Pillow as a dependency to imageio (pillow >= 8.3.2) and as a dependency to matplotlib (pillow >= 6.2.0) on top of our own explicit dependency (~9.2.0).enough-analyst-54434
09/07/2022, 1:04 AMenough-analyst-54434
09/07/2022, 1:06 AMplain-summer-72727
09/07/2022, 1:07 AMplain-summer-72727
09/07/2022, 1:07 AMplain-summer-72727
09/07/2022, 1:07 AMenough-analyst-54434
09/07/2022, 1:08 AM[python.resolves]
python-default = "requirements-lock.txt"
enough-analyst-54434
09/07/2022, 1:08 AMenough-analyst-54434
09/07/2022, 1:10 AMenough-analyst-54434
09/07/2022, 1:19 AMenough-analyst-54434
09/07/2022, 1:23 AMenough-analyst-54434
09/07/2022, 1:24 AMenough-analyst-54434
09/07/2022, 1:24 AMenough-analyst-54434
09/07/2022, 1:26 AM--complete-platform
description.enough-analyst-54434
09/07/2022, 1:27 AMplain-summer-72727
09/07/2022, 1:29 AMplain-summer-72727
09/07/2022, 3:16 AMenough-analyst-54434
09/07/2022, 1:31 PM--resolve-local-platforms
. On WSL if I use the pex command from the -ldebug
logs you provided I too get a lambda.zip where:
(pex.venv) jsirois@Gill-Windows:~$ pex-tools ./lambda.zip info -i2 | grep -i pillow
"Pillow-9.2.0-cp38-cp38-manylinux_2_28_x86_64.whl": "d0c4bca60376f84608c7e5ed5d261c4c937cbf1195fcf259f2de49910d56d9d6",
"pillow~=9.2.0",
Now if I re-run but drop the `--resolve-local-platforms`I get:
(pex.venv) jsirois@Gill-Windows:~$ pex "Django<4" "architect==0.6.0" "boto3==1.24.36" "clickhouse_driver==0.2.4" "dill==0.3.3" "django-admin-rangefilter==0.8.1" "django-admin-row-actions==0.0.5" "django-cors-headers==3.11.0" "django-currentuser<0.6.0" "django-debug-toolbar==3.2.4" "django-filter==2.4.0" "django-json-widget==1.1.1" "django-jsonschema-form==1.0.3" "django-opensearch-dsl==0.2.0" "django-phonenumber-field==6.1.0" "django-redis-admin" "django-redis<6" "django-rest-hooks==1.5.0" "django-simple-history==3.0.0" "django-structlog>=2.1.0<2.2" "django-taggit-serializer==0.1.7" "django-taggit==3.0.0" "djangorestframework==3.13.1" "drf-api-tracking" "drf-spectacular==0.22.1" "drf-yasg<=1.21" "dropbox==10.6.0" "environs~=9.5.0" "exif==1.3.5" "geopandas" "h5py" "httpx==0.23.0" "humanize>=3.14.0<4.0.0" "infi.clickhouse_orm==2.1.1" "jsonmerge~=1.8.0" "jsonschema==3.2.0" "matplotlib==3.5.1" "natsort==7.1.1" "numpy~=1.22.0" "pandas~=1.3.3" "phonenumbers==8.12.20" "pillow~=9.2.0" "pyjwt~=2.3.0" "pylas==0.4.3" "python_dateutil>=2.5.3" "pytz==2022.1" "requests" "sentry-sdk<1.6.0" "serverless-wsgi>=3.0.0" "structlog~=22.1.0" "urllib3>=1.25.3" "--lock" "lock.json" --output-file lambda-no-rlp.zip --manylinux manylinux2014 --complete-platform aws-38-cp.json
Traceback (most recent call last):
File "/home/jsirois/pex.venv/bin/pex", line 8, in <module>
sys.exit(main())
File "/home/jsirois/pex.venv/lib/python3.8/site-packages/pex/bin/pex.py", line 762, in main
do_main(
File "/home/jsirois/pex.venv/lib/python3.8/site-packages/pex/bin/pex.py", line 783, in do_main
pex_builder = build_pex(
File "/home/jsirois/pex.venv/lib/python3.8/site-packages/pex/bin/pex.py", line 629, in build_pex
result = try_(
File "/home/jsirois/pex.venv/lib/python3.8/site-packages/pex/result.py", line 84, in try_
raise ResultError(error=result)
pex.result.ResultError: Failed to resolve compatible artifacts from lock lock.json for 1 target:
1. cp38-cp38-manylinux_2_26_x86_64:
Failed to resolve all requirements for complete platform cp38-cp38-manylinux_2_26_x86_64 from lock.json:
Configured with:
build: False
use_wheel: True
Dependency on django-admin-row-actions not satisfied, 1 incompatible candidate found:
1.) django-admin-row-actions 0.0.5 (via: django-admin-row-actions==0.0.5) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/b9/23/bdc09b4ac29ad72e3694886ebfc5720083388cb6669d39dcff00ebe889f2/django-admin-row-actions-0.0.5.tar.gz>
Dependency on django-json-widget not satisfied, 1 incompatible candidate found:
1.) django-json-widget 1.1.1 (via: django-json-widget==1.1.1) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/c0/13/f256f113ab2a0828e0c5992d2f2b7c6fd377ee9e9918d6d7cb14a1b2e706/django-json-widget-1.1.1.tar.gz>
Dependency on django-opensearch-dsl not satisfied, 1 incompatible candidate found:
1.) django-opensearch-dsl 0.2 (via: django-opensearch-dsl==0.2.0) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/cf/f3/1c95c57ceea474eba3c53847d50edfcee8d246bf9319935d8a60bca11076/django-opensearch-dsl-0.2.0.tar.gz>
Dependency on django-taggit-serializer not satisfied, 1 incompatible candidate found:
1.) django-taggit-serializer 0.1.7 (via: django-taggit-serializer==0.1.7) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/68/c4/9737e1df18ca8af0f40f46a54af08a15d75eb7afd7805ba94c87fc042ae3/django-taggit-serializer-0.1.7.tar.gz>
Dependency on jsonmerge not satisfied, 1 incompatible candidate found:
1.) jsonmerge 1.8 (via: jsonmerge~=1.8.0) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/37/1b/05dd6fd53a76a73e898f3d2b60d02ee90af9e11de2f8e3802a6262fa1ca9/jsonmerge-1.8.0.tar.gz>
Dependency on pylas not satisfied, 1 incompatible candidate found:
1.) pylas 0.4.3 (via: pylas==0.4.3) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/df/91/22702de36464dac4dac89e876f59b8d5ef3f6fdaeccbf24dc68aa77f4d9b/pylas-0.4.3.tar.gz>
Dependency on future not satisfied, 1 incompatible candidate found:
1.) future 0.18.2 (via: django-json-widget==1.1.1 -> future) does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/45/0b/38b06fd9b92dc2b68d58b75f900e97884c45bedd2ff83203d933cf5851c9/future-0.18.2.tar.gz>
Dependency on coreschema not satisfied, 1 incompatible candidate found:
1.) coreschema 0.0.4 does not have any compatible artifacts:
<https://files.pythonhosted.org/packages/93/08/1d105a70104e078718421e6c555b8b293259e7fc92f7e9a04869947f198f/coreschema-0.0.4.tar.gz>
requirers:
via: drf-yasg<=1.21 -> coreschema>=0.0.4
via: drf-yasg<=1.21 -> coreapi>=2.3.3 -> coreschema
(pex.venv) jsirois@Gill-Windows:~$
It may not look like it, but that's what you want! The complete platform description is being used to build for the foreign AWS platform description and the PEX build is failing because only wheels are accepted for foreign platform PEX builds (PEX isn't smart enough to do cross-builds) and 8 of your dependencies are only available in sdist form.enough-analyst-54434
09/07/2022, 1:36 PMpip wheel django-admin-row-actions==0.0.5 django-json-widget==1.1.1 django-opensearch-dsl==0.2.0 django-taggit-serializer==0.1.7 jsonmerge==1.8.0 pylas==0.4.3 future==0.18.2 coreschema==0.0.4 --no-deps --wheel-dir wheels/
on the target AWS image) and then serve those wheels up in a flat directory over http or via a netwrok share and the use [python-repos] repos
over in Pants to point at the extra source of pre-built wheels: https://www.pantsbuild.org/docs/reference-python-repos#section-reposenough-analyst-54434
09/07/2022, 1:54 PM--resolve-local-platforms
, the local CPython 3.8 in WSL's Ubuntu would no-longer resolve as a substitute for the AWS CPython 3.8 described by your complete platform json and you'd hit the error above which is what you want.
In the meantime, if you want to work around, you'll need to eliminate the WSL CPython 3.8 from your PATH when building the lambda.incalculable-hydrogen-44003
09/07/2022, 4:48 PMenough-analyst-54434
09/07/2022, 4:52 PMincalculable-hydrogen-44003
09/07/2022, 6:34 PM[python-repos] repos
. Will pants first try to pull from our custom repo before going to pypi?enough-analyst-54434
09/07/2022, 7:30 PMincalculable-hydrogen-44003
09/07/2022, 7:41 PMincalculable-hydrogen-44003
09/07/2022, 9:39 PMcomplete_platforms
? Or is it enought to just add the new repo with the generated whls?enough-analyst-54434
09/07/2022, 9:46 PMfor the lambda, there must be no Python 3.8 interpreter visible (on the PATH) to Pants. That or run the
./pants package ...`command on a Mac. This step works around a bug in Pex filed above and can go away once that bug is fixed and Pants incorporates it.
2. A `[python-repos] repos = ...that points to a find-links repo containing all your pre-built wheels.
With all this set up, you can re-generate your lockfiles with
./pants generate-lockfiles`and then proceed.enough-analyst-54434
09/07/2022, 9:47 PMenough-analyst-54434
09/07/2022, 9:51 PM[python-repos] repos
since the last time you generated lock files and force you to re-generate them, but Pants 2.12.x has a bug and does not do this, so you need to remember to re-gen on your own. This is fixed in Pants 2.14.0a0 by https://github.com/pantsbuild/pants/pull/16525incalculable-hydrogen-44003
09/07/2022, 9:55 PMenough-analyst-54434
09/07/2022, 9:58 PMruntime
is strictly worse - it underspecifies the foreign platform and thus allows in bad ABI wheels.enough-analyst-54434
09/07/2022, 9:58 PMenough-analyst-54434
09/07/2022, 10:06 PM;
in them like pywinpty; sys_platform == "win32"
3. The Python interpreter full version for selecting applicability based on `Python-Requires`metadata (i.e.: `>=3.7`for a project that only works with Python 3.7+
A complete platform gives you all that data. A runtime / abbreviated platform gives you almost none of that data - really just #3incalculable-hydrogen-44003
09/07/2022, 10:22 PMpants package
, and then generate the lockfile? How does packaging impact lockfile generation?enough-analyst-54434
09/07/2022, 10:28 PM./pants package
goal is just one of those.enough-analyst-54434
09/07/2022, 10:30 PM[python-repos]
- but that's the only time it's required. Once you've done it, you can check in the updated lockfile and then proceed to run other Pants goals like ./pants test
, ./pants package
, etc.enough-analyst-54434
09/07/2022, 10:33 PM./pants generate-lockfiles
. In this case though you hit another bug where updating `[python-repos] repos`slips by Pants defenses and you are not warned.enough-analyst-54434
09/07/2022, 10:33 PMincalculable-hydrogen-44003
09/07/2022, 10:42 PMcomplete_platform
we are running the command inside of a lambda docker container, so how does it know we are in WSL? Also by removing python3.8 from our path, what is pants going to use instead?enough-analyst-54434
09/07/2022, 10:51 PM__2__28_
or _`_2_27_`_ will work on WSL but will not work in the lambda runtime. The lambda runtime can only work with wheels built for _2_26_
or lower.
Now, Pants passes Pex a flag `--resolve-local-platforms`which tells Pex: "please try and find a local interpreter that matches the --platform and --complete-platform values I've passed you if possible and use that instead if successful". That flag is there to allow building sdists into wheels when possible, but it is predicated on finding a local interpreter that exactly matches the foreign platform. On a Mac you will never find such an interpreter since the foreign platform is Linux. Under WSL Pex currently has a bug (https://github.com/pantsbuild/pex/issues/1899) that decides the foreign `_2_26_`platform is satisifed by the local _2_28_
interpreter. As such, you have to hide that interpreter from Pants to work around that bug for now.enough-analyst-54434
09/07/2022, 10:54 PMincalculable-hydrogen-44003
09/07/2022, 11:02 PMincalculable-hydrogen-44003
09/07/2022, 11:30 PMenough-analyst-54434
09/07/2022, 11:31 PMenough-analyst-54434
09/07/2022, 11:32 PMincalculable-hydrogen-44003
09/07/2022, 11:33 PMincalculable-hydrogen-44003
09/07/2022, 11:50 PMincalculable-hydrogen-44003
09/07/2022, 11:55 PMmanylinux_2_26_x86_64
so now we get the incompatibility error!incalculable-hydrogen-44003
09/07/2022, 11:57 PMenough-analyst-54434
09/08/2022, 12:08 AMenough-analyst-54434
09/08/2022, 12:09 AMincalculable-hydrogen-44003
09/08/2022, 12:10 AMpython-repos
isn't workingenough-analyst-54434
09/08/2022, 12:10 AM--resolve-local-platforms
correctly picks a compatible CPython 3.8 2_26
interpreter in the image, it can use the old lockfile and build sdists into wheels. The wheels you prebuilt and made available via the find links repo are not needed.enough-analyst-54434
09/08/2022, 12:10 AMWe are now hardcoding the url to our generated whls since adding the repo location toThat does not make sense. I want to put on the brakes if possible.isn't workingpython-repos
enough-analyst-54434
09/08/2022, 12:11 AM[python-repos] repos
at all.enough-analyst-54434
09/08/2022, 12:11 AMincalculable-hydrogen-44003
09/08/2022, 12:15 AMincalculable-hydrogen-44003
09/08/2022, 12:16 AMincalculable-hydrogen-44003
09/08/2022, 12:18 AMenough-analyst-54434
09/08/2022, 12:24 AMenough-analyst-54434
09/08/2022, 12:25 AM./pants package
in a docker container that matches the AWS lambda runtime, you should need no changes to your Pants configuration (re-wind a ~day) and the resulting lambda should just work.enough-analyst-54434
09/08/2022, 12:26 AMincalculable-hydrogen-44003
09/08/2022, 12:28 AMenough-analyst-54434
09/08/2022, 12:28 AMincalculable-hydrogen-44003
09/08/2022, 12:29 AMplain-summer-72727
09/08/2022, 12:29 AMenough-analyst-54434
09/08/2022, 12:29 AMincalculable-hydrogen-44003
09/08/2022, 12:29 AMrepo
enough-analyst-54434
09/08/2022, 12:30 AMenough-analyst-54434
09/08/2022, 12:30 AMenough-analyst-54434
09/08/2022, 12:31 AMincalculable-hydrogen-44003
09/08/2022, 12:32 AMincalculable-hydrogen-44003
09/08/2022, 12:32 AMincalculable-hydrogen-44003
09/08/2022, 12:34 AMpackage
locally on a 2.28
machine after generating the lockfile on a 2.26
. Maybe our local machines also have 2.26
? Either way, we are understanding this better I thinkincalculable-hydrogen-44003
09/08/2022, 12:35 AMenough-analyst-54434
09/08/2022, 12:37 AMenough-analyst-54434
09/08/2022, 12:37 AM2.28
machine was that it picked the `2.28`wheel, it should have picked the `2.17`wheel.enough-analyst-54434
09/08/2022, 12:38 AM2.26
enough-analyst-54434
09/08/2022, 12:40 AMenough-analyst-54434
09/08/2022, 12:41 AMincalculable-hydrogen-44003
09/08/2022, 1:12 AM