astral-sh / uv

An extremely fast Python package and project manager, written in Rust.
https://docs.astral.sh/uv
Apache License 2.0
22.82k stars 662 forks source link

Issue with pyproj as dependency #8177

Open paulf81 opened 2 hours ago

paulf81 commented 2 hours ago

I have a small uv project that includes a pyproject.toml:

[project]
name = "test_repo"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = ["pyproj"]

If I run on the command line:

uv sync

I have the output:

$ uv sync
Resolved 3 packages in 4ms
error: Failed to prepare distributions
  Caused by: Failed to fetch wheel: pyproj==3.7.0
  Caused by: Build backend failed to determine requirements with `build_wheel()` (exit status: 1)

[stderr]
proj executable not found. Please set the PROJ_DIR variable. For more information see: https://pyproj4.github.io/pyproj/stable/installation.html

Following through the provided link, the variable mentioned is required when building from source, but is that what I'm doing in the above example? Thank you for any help!

zanieb commented 2 hours ago

Can you share the uv.lock file?

paulf81 commented 2 hours ago
version = 1
requires-python = ">=3.11"

[[package]]
name = "certifi"
version = "2024.8.30"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507 }
wheels = [
    { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321 },
]

[[package]]
name = "pyproj"
version = "3.7.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
    { name = "certifi" },
]
sdist = { url = "https://files.pythonhosted.org/packages/47/c2/0572c8e31aebf0270f15f3368adebd10fc473de9f09567a0743a3bc41c8d/pyproj-3.7.0.tar.gz", hash = "sha256:bf658f4aaf815d9d03c8121650b6f0b8067265c36e31bc6660b98ef144d81813", size = 225577 }
wheels = [
    { url = "https://files.pythonhosted.org/packages/e2/8f/15ff6ab10a08050e94afcd544962a1a930d0bb7ca102ad39795a847eb340/pyproj-3.7.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:e66d8d42dbdf232e121546c5a1dec097caf0454e4885c09a8e03cdcee0753c03", size = 6272213 },
    { url = "https://files.pythonhosted.org/packages/2d/4d/610fe2a17de71b4fe210af69ce25f2d65379ba0a48299129894d0d0988ee/pyproj-3.7.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:7764b64a0aefe40134a2828b3a40be88f6c8b7832c45d8a9f2bd592ace4b2a3b", size = 4634548 },
    { url = "https://files.pythonhosted.org/packages/d6/27/0327d0b0fcdfc4cf72696a2effca2963e524dcd846a0274ba503f8bf2648/pyproj-3.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:53c442c5081dc95346996f5c4323fde2caafc69c6e60b4707aa46e88244f1e04", size = 6333913 },
    { url = "https://files.pythonhosted.org/packages/3c/e5/2cb256148c730b9c3f74bfb3c03904f5070499c6dcaea153073a9642c6c6/pyproj-3.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5b305d4d5d7697885681d9b660623e328227612823d5c660e0a9566cb48838", size = 9460363 },
    { url = "https://files.pythonhosted.org/packages/ba/a3/4aa1e8e78ad18aa170efd2c94c1931bf2a34c526683b874d06e40fa323f6/pyproj-3.7.0-cp311-cp311-win32.whl", hash = "sha256:de2b47d748dc41cccb6b3b713d4d7dc9aa1046a82141c8665026908726426abc", size = 5820551 },
    { url = "https://files.pythonhosted.org/packages/26/0c/b084e8839a117eaad8cb4fbaa81bbb24c6f183de0ee95c6c4e2770ab6f09/pyproj-3.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:38cba7c4c5679e40242dd959133e95b908d3b912dd66291094fd13510e8517ff", size = 6231788 },
    { url = "https://files.pythonhosted.org/packages/bd/19/be806b711e9ebfb80411c653054157db128fffdd7f8493e3064136c8d880/pyproj-3.7.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:8cbec92bdd6e9933ca08795c12717d1384e9b51cf4b1acf0d753db255a75c51e", size = 6261400 },
    { url = "https://files.pythonhosted.org/packages/99/3b/8497995e8cae0049d013679c6a7ac6c57b816d590c733a388748dafe5af5/pyproj-3.7.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:8c4a8e4d3ba76c3adac3c087544cf92f7f9a19ea34946904a13fca48cc1c0106", size = 4637848 },
    { url = "https://files.pythonhosted.org/packages/ea/f7/2a5b46d6f8da913d58d44942ab06ca4803b5424b73259b15344cf90040f6/pyproj-3.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82624fb42aa31f6b1a860fbc0316babd07fd712642bc31022df4e9b4056bf463", size = 6324856 },
    { url = "https://files.pythonhosted.org/packages/36/83/c257771077bcf9da20d0e97abc834f9037c219986cc76d40183903a30464/pyproj-3.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34e1bbb3f89c68d4a6835c40b2da8b27680eec60e8cc7cdb08c09bcc725b2b62", size = 9525831 },
    { url = "https://files.pythonhosted.org/packages/d6/50/a635de79def69fe03cdef3a4bd3bec780c30987bce3a15dd7099afb2506f/pyproj-3.7.0-cp312-cp312-win32.whl", hash = "sha256:952515d5592167ad4436b355485f82acebed2a49b46722159e4584b75a763dd3", size = 5811864 },
    { url = "https://files.pythonhosted.org/packages/a1/8b/96bc8c8f3eca4eb7fa3758fde0b755d1df30a19f494376e3ee8de1ef4e79/pyproj-3.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:0692f806224e8ed82fe4acfa57268ff444fdaf9f330689f24c0d96e59480cce1", size = 6224720 },
    { url = "https://files.pythonhosted.org/packages/bf/da/a17c452bea1ff4cd58d6dc573055b9c8fb6af114b7d2c694782aec770865/pyproj-3.7.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:94e8b903a9e83448fd2379c49dec3e8cd83c9ed36f54354e68b601cef56d5426", size = 6254898 },
    { url = "https://files.pythonhosted.org/packages/c2/31/ab07b389f2caa527c95ab2ea1940d28879bd2a19e67b2529cb3e94648d26/pyproj-3.7.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:64cb5c17d6f6305a8b978a40f95560c87c5b363fcac40632337955664437875a", size = 4628612 },
    { url = "https://files.pythonhosted.org/packages/1d/24/def3ded6529db3e3d8351ad73481730249ab57d8d876d502f86d7958ce06/pyproj-3.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c54e9bdda7ab9c4a5af50f9d6e6ee7704e05fafd504896b96ed1208c7aea098", size = 6315895 },
    { url = "https://files.pythonhosted.org/packages/dd/14/07314f78302105d199fb25e73376d723efe9c2ef3906463aae209913a6d3/pyproj-3.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24fa4e9e0abba875f9524808410cc520067eaf38fd5549ed0ef7c43ac39923c9", size = 9466144 },
    { url = "https://files.pythonhosted.org/packages/00/f2/2a116920db3496e3ff3c94d7d8d15da41374f35cfe1b9e79682eca500a61/pyproj-3.7.0-cp313-cp313-win32.whl", hash = "sha256:b9e8353fc3c79dc14d1f5ac758a1a6e4eee04102c3c0b138670f121f5ac52eb4", size = 5807180 },
    { url = "https://files.pythonhosted.org/packages/f8/33/3c8c6302717096b54aa14ccbb271045ba04629e21cbf348f2f2dc94f69b4/pyproj-3.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:10a8dc6ec61af97c89ff032647d743f8dc023645773da42ef43f7ae1125b3509", size = 6218036 },
]

[[package]]
name = "test-repo"
version = "0.1.0"
source = { virtual = "." }
dependencies = [
    { name = "pyproj" },
]

[package.metadata]
requires-dist = [{ name = "pyproj" }]
zanieb commented 2 hours ago

And what platform are you are? Like OS and architecture?

Can you share uv sync -v logs?

paulf81 commented 1 hour ago

I'm on a mac with Apple M1 Pro. Here are those logs:

DEBUG uv 0.4.20 (Homebrew 2024-10-08) DEBUG Found project root: /Users/pfleming/test_repo DEBUG No workspace root found, using project root DEBUG Reading requests from /Users/pfleming/test_repo/.python-version DEBUG The virtual environment's Python version satisfies Python 3.11 DEBUG Using request timeout of 30s DEBUG Found static pyproject.toml for: test-repo @ file:///Users/pfleming/test_repo DEBUG No workspace root found, using project root DEBUG Existing uv.lock satisfies workspace requirements Resolved 3 packages in 1ms DEBUG Using request timeout of 30s DEBUG Requirement already cached: certifi==2024.8.30 DEBUG Identified uncached distribution: pyproj==3.7.0 DEBUG Acquired lock for /Users/pfleming/.cache/uv/sdists-v4/pypi/pyproj/3.7.0 DEBUG Found fresh response for: https://files.pythonhosted.org/packages/47/c2/0572c8e31aebf0270f15f3368adebd10fc473de9f09567a0743a3bc41c8d/pyproj-3.7.0.tar.gz DEBUG Building: pyproj==3.7.0 DEBUG Ignoring empty directory DEBUG Resolving build requirements DEBUG Solving with installed Python version: 3.11.10 DEBUG Solving with target Python version: >=3.11.10 DEBUG Adding direct dependency: setuptools>=61.0.0 DEBUG Adding direct dependency: wheel DEBUG Adding direct dependency: cython>=3 DEBUG Found fresh response for: https://pypi.org/simple/wheel/ DEBUG Found fresh response for: https://pypi.org/simple/setuptools/ DEBUG Searching for a compatible version of setuptools (>=61.0.0) DEBUG Selecting: setuptools==75.1.0 [compatible] (setuptools-75.1.0-py3-none-any.whl) DEBUG Found fresh response for: https://files.pythonhosted.org/packages/1b/d1/9babe2ccaecff775992753d8686970b1e2755d21c8a63be73aba7a4e7d77/wheel-0.44.0-py3-none-any.whl.metadata DEBUG Found fresh response for: https://pypi.org/simple/cython/ DEBUG Found fresh response for: https://files.pythonhosted.org/packages/ff/ae/f19306b5a221f6a436d8f2238d5b80925004093fa3edea59835b514d9057/setuptools-75.1.0-py3-none-any.whl.metadata DEBUG Searching for a compatible version of wheel () DEBUG Selecting: wheel==0.44.0 [compatible] (wheel-0.44.0-py3-none-any.whl) DEBUG Searching for a compatible version of cython (>=3) DEBUG Selecting: cython==3.0.11 [compatible] (Cython-3.0.11-py2.py3-none-any.whl) DEBUG Found fresh response for: https://files.pythonhosted.org/packages/43/39/bdbec9142bc46605b54d674bf158a78b191c2b75be527c6dcf3e6dfe90b8/Cython-3.0.11-py2.py3-none-any.whl.metadata DEBUG Tried 3 versions: cython 1, setuptools 1, wheel 1 DEBUG Split specific environment resolution took 0.004s DEBUG Installing in cython==3.0.11, setuptools==75.1.0, wheel==0.44.0 in /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX DEBUG Requirement already cached: cython==3.0.11 DEBUG Requirement already cached: setuptools==75.1.0 DEBUG Requirement already cached: wheel==0.44.0 DEBUG Installing build requirements: cython==3.0.11, setuptools==75.1.0, wheel==0.44.0 DEBUG Extracting file name=PackageName("wheel") DEBUG Extracting file name=PackageName("cython") DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ze6QisJCv0xstyl95YuW-/wheel-0.44.0.dist-info to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/wheel-0.44.0.dist-info DEBUG Extracting file name=PackageName("setuptools") DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/YyttNL24_v5ysK1y1K43P/cython.py to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/cython.py DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ZRDZKhrmPrm7PKKDc_JA0/distutils-precedence.pth to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/distutils-precedence.pth DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ze6QisJCv0xstyl95YuW-/wheel to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/wheel DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/YyttNL24_v5ysK1y1K43P/Cython to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/Cython DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ZRDZKhrmPrm7PKKDc_JA0/setuptools-75.1.0.dist-info to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/setuptools-75.1.0.dist-info DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/YyttNL24_v5ysK1y1K43P/pyximport to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/pyximport DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ZRDZKhrmPrm7PKKDc_JA0/setuptools to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/setuptools DEBUG Extracted 2 files name=PackageName("wheel") DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/YyttNL24_v5ysK1y1K43P/Cython-3.0.11.dist-info to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/Cython-3.0.11.dist-info DEBUG Writing entrypoints name=PackageName("wheel") DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ZRDZKhrmPrm7PKKDc_JA0/pkg_resources to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/pkg_resources DEBUG No data name=PackageName("wheel") DEBUG Writing extra metadata name=PackageName("wheel") DEBUG Cloning /Users/pfleming/.cache/uv/archive-v0/ZRDZKhrmPrm7PKKDc_JA0/_distutils_hack to /Users/pfleming/.cache/uv/builds-v0/.tmpE5dhUX/lib/python3.11/site-packages/_distutils_hack DEBUG Extracted 4 files name=PackageName("cython") DEBUG Writing entrypoints name=PackageName("cython") DEBUG Extracted 5 files name=PackageName("setuptools") DEBUG Writing record name=PackageName("wheel") DEBUG No entrypoints name=PackageName("setuptools") DEBUG No data name=PackageName("setuptools") DEBUG Writing extra metadata name=PackageName("setuptools") DEBUG Writing record name=PackageName("setuptools") DEBUG No data name=PackageName("cython") DEBUG Writing extra metadata name=PackageName("cython") DEBUG Writing record name=PackageName("cython") DEBUG Creating PEP 517 build environment DEBUG Calling setuptools.build_meta.get_requires_for_build_wheel() DEBUG proj executable not found. Please set the PROJ_DIR variable. For more information see: https://pyproj4.github.io/pyproj/stable/installation.html DEBUG Released lock at /Users/pfleming/.cache/uv/sdists-v4/pypi/pyproj/3.7.0/.lock error: Failed to prepare distributions Caused by: Failed to fetch wheel: pyproj==3.7.0 Caused by: Build backend failed to determine requirements with build_wheel() (exit status: 1)

[stderr] proj executable not found. Please set the PROJ_DIR variable. For more information see: https://pyproj4.github.io/pyproj/stable/installation.html

charliermarsh commented 1 hour ago

I think it's because they only publish ARM Wheels for macOS 14 and later, but I assume if you're on an M1 you're on some version earlier than macOS 14? In which case, you have to build from source, and that source build is failing for reasons that are specific to the package. It looks like they provide some instructions in https://pyproj4.github.io/pyproj/stable/installation.html.