<#15296 'UndefinedEnvironmentName: 'python_full_ve...
# github-notifications
q
#15296 'UndefinedEnvironmentName: 'python_full_version' does not exist in evaluation environment' when building lambda with any 3rd party dev on arm64 macOS Issue created by huonw Describe the bug I'm trying to build a
python_awslambda
on an arm64 macOS device. As soon as I add any 3rd party dependency (with prebuilt wheels that are highly compatible: https://pypi.org/project/urllib3/1.26.9/#files) in a minimal project https://github.com/huonw/pants-awslambda-UndefinedEnvironmentName, I get an error about `python_full_version`:
Copy code
$ tree .
tree .     
.
├── 3rdparty
│   └── python
│       └── default.lock
├── BUILD
├── pants
├── pants.toml
└── src
    └── lambda-package
        ├── BUILD
        └── lambda.py

4 directories, 6 files
Copy code
# pants.toml                                                          
[GLOBAL]
pants_version = "2.10.1rc0"

backend_packages = [
  "pants.backend.python",
  "pants.backend.awslambda.python",
]

use_deprecated_python_macros = false

[python]
interpreter_constraints = ["CPython==3.9.*"]
enable_resolves = true

[anonymous-telemetry]
enabled = false
Copy code
# src/lambda-package/BUILD
python_sources()

# wheel compatible with all Pythons/platforms: <https://pypi.org/project/urllib3/1.26.9/#files>
python_requirement(name="urllib3", requirements=["urllib3==1.26.9"])

python_awslambda(
    name="awslambda",
    handler="lambda.py:handler",
    runtime="python3.9",
)
Copy code
# src/lambda-package/lambda.py
import urllib3

def handler():
    print(urllib3.__version__)
Copy code
$ ./pants package src/lambda-package:awslambda
19:59:40.97 [WARN] AWS Lambdas built on macOS may fail to build. If your lambda uses any third-party dependencies without binary wheels (bdist) for Linux available, it will fail to build. If this happens, you will either need to update your dependencies to only use dependencies with pre-built wheels, or find a Linux environment to run ./pants package. (See <https://realpython.com/python-wheels/> for more about wheels.)

(If the build does not raise an exception, it's safe to use macOS.)
19:59:42.03 [INFO] Completed: Building src.lambda-package/awslambda.zip with 1 requirement: urllib3==1.26.9
19:59:42.03 [ERROR] 1 Exception encountered:

  ProcessExecutionFailure: Process 'Building src.lambda-package/awslambda.zip with 1 requirement: urllib3==1.26.9' failed with exit code 1.
stdout:

stderr:
ERROR: Exception:
Traceback (most recent call last):
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py", line 223, in _main
    status = self.run(options, args)
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py", line 180, in wrapper
    return func(self, options, args)
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_internal/commands/download.py", line 130, in run
    requirement_set = resolver.resolve(
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 90, in resolve
    if not req.match_markers():
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py", line 290, in match_markers
    return any(
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py", line 291, in <genexpr>
    self.markers.evaluate({'extra': extra})
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py", line 336, in evaluate
    return _evaluate_markers(self._markers, current_environment)
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py", line 247, in _evaluate_markers
    groups[-1].append(_evaluate_markers(marker, environment))
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py", line 252, in _evaluate_markers
    lhs_value = _get_env(environment, lhs.value)
  File "/Users/huon/.cache/pants/named_caches/pex_root/venvs/s/e1a0e82b/venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py", line 232, in _get_env
    raise UndefinedEnvironmentName(
pip._vendor.packaging.markers.UndefinedEnvironmentName: 'python_full_version' does not exist in evaluation environment.
pid 76671 -> /Users/huon/.cache/pants/named_caches/pex_root/venvs/96480d4730684b9f35e3b227b5f7ff2f259301b2/1a8c9b6a06d34ea8e284376abc61eb459eadac8f/pex --disable-pip-version-check --no-python-version-warning --exists-action a --isolated -q --cache-dir /Users/huon/.cache/pants/named_caches/pex_root --log /private/var/folders/sv/vd266m4d4lvctgs2wpnhjs9w0000gn/T/process-executionOtvmPW/.tmp/tmpu539vkm5/pip.log download --dest /private/var/folders/sv/vd266m4d4lvctgs2wpnhjs9w0000gn/T/process-executionOtvmPW/.tmp/tmp8xv0mshb/cp39-cp39-linux_x86_64 --only-binary :all: --constraint __constraints.txt urllib3==1.26.9 --platform manylinux2014_x86_64 --platform linux_x86_64 --implementation cp --python-version 39 --abi cp39 --index-url <https://pypi.org/simple/> --retries 5 --timeout 15 exited with 2 and STDERR:
Failed to resolve for platform linux_x86_64-cp-39-cp39. Resolve requires evaluation of unknown environment marker: 'python_full_version' does not exist in evaluation environment.
NB. the build works if I comment out the
import urllib3
from
src/lambda-package/lambda.py
Pants version The linked project reproduces this for me on all of (with just minor adjustments to the
pants.toml
): • 2.10.0 • 2.10.1rc0 • 2.11.0rc5 • 2.11.0 • 2.12.0.dev3 This seems to be related to #14995, but the fix for that has apparently landed in all but 2.10.0. OS macOS Additional infohttps://github.com/huonw/pants-awslambda-UndefinedEnvironmentName pantsbuild/pants