diff --git a/.ci/manywheel/build_common.sh b/.ci/manywheel/build_common.sh index 6437cf9f0d48..49549c9f2994 100644 --- a/.ci/manywheel/build_common.sh +++ b/.ci/manywheel/build_common.sh @@ -97,8 +97,7 @@ if [[ -z "$PYTORCH_ROOT" ]]; then exit 1 fi pushd "$PYTORCH_ROOT" -retry pip install -q "setuptools>=70.1.0" packaging -retry pip install -qU cmake ninja +retry pip install -qUr requirements-build.txt python setup.py clean retry pip install -qr requirements.txt case ${DESIRED_PYTHON} in diff --git a/.ci/manywheel/build_libtorch.sh b/.ci/manywheel/build_libtorch.sh index 30a723cb1095..4de775b1823c 100644 --- a/.ci/manywheel/build_libtorch.sh +++ b/.ci/manywheel/build_libtorch.sh @@ -92,8 +92,7 @@ if [[ -z "$PYTORCH_ROOT" ]]; then exit 1 fi pushd "$PYTORCH_ROOT" -retry pip install -q "setuptools>=70.1.0" packaging -retry pip install -qU cmake ninja +retry pip install -qUr requirements-build.txt python setup.py clean retry pip install -qr requirements.txt retry pip install -q numpy==2.0.1 diff --git a/.ci/pytorch/run_tests.sh b/.ci/pytorch/run_tests.sh index 34ee40d7bcd0..f5ed90deef24 100755 --- a/.ci/pytorch/run_tests.sh +++ b/.ci/pytorch/run_tests.sh @@ -74,12 +74,13 @@ else fi # Environment initialization +retry pip install -qUr requirements-build.txt if [[ "$(uname)" == Darwin ]]; then # Install the testing dependencies - retry pip install -q future hypothesis ${NUMPY_PACKAGE} ${PROTOBUF_PACKAGE} pytest setuptools six typing_extensions pyyaml + retry pip install -q future hypothesis ${NUMPY_PACKAGE} ${PROTOBUF_PACKAGE} pytest else retry pip install -qr requirements.txt || true - retry pip install -q hypothesis protobuf pytest setuptools || true + retry pip install -q hypothesis protobuf pytest || true numpy_ver=1.15 case "$(python --version 2>&1)" in *2* | *3.5* | *3.6*) diff --git a/.ci/wheel/build_wheel.sh b/.ci/wheel/build_wheel.sh index 6070e967ef82..878d6595c84c 100755 --- a/.ci/wheel/build_wheel.sh +++ b/.ci/wheel/build_wheel.sh @@ -184,7 +184,8 @@ tmp_env_name="wheel_py$python_nodot" conda create ${EXTRA_CONDA_INSTALL_FLAGS} -yn "$tmp_env_name" python="$desired_python" ${CONDA_ENV_CREATE_FLAGS} source activate "$tmp_env_name" -pip install "numpy=${NUMPY_PINNED_VERSION}" "pyyaml${PYYAML_PINNED_VERSION}" requests ninja "setuptools${SETUPTOOLS_PINNED_VERSION}" typing_extensions +retry pip install -r "${pytorch_rootdir}/requirements-build.txt" +pip install "numpy=${NUMPY_PINNED_VERSION}" "pyyaml${PYYAML_PINNED_VERSION}" requests ninja "setuptools${SETUPTOOLS_PINNED_VERSION}" typing-extensions retry pip install -r "${pytorch_rootdir}/requirements.txt" || true retry brew install libomp diff --git a/.github/requirements-gha-cache.txt b/.github/requirements-gha-cache.txt index 5e2819c8a836..5c691e4bf9b3 100644 --- a/.github/requirements-gha-cache.txt +++ b/.github/requirements-gha-cache.txt @@ -1,5 +1,6 @@ # This file is to cache other dependencies not specified elsewhere in: -# requirement.txt +# requirements.txt +# requirements-build.txt # docs/requirements.txt # docs/cpp/requirements.txt # functorch/docs/requirements.txt diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0fca34048196..66cd5f653446 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -260,6 +260,7 @@ jobs: check-latest: false cache: pip cache-dependency-path: | + **/requirements-build.txt **/requirements.txt - name: Setup Min Python version if: matrix.test_type != 'older_python_version' @@ -270,6 +271,7 @@ jobs: check-latest: false cache: pip cache-dependency-path: | + **/requirements-build.txt **/requirements.txt - name: Install torch if: matrix.test_type == 'with_torch' diff --git a/Dockerfile b/Dockerfile index 9f23712af2b8..63b8c5bcb47a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,7 +33,7 @@ RUN case ${TARGETPLATFORM} in \ *) MINICONDA_ARCH=x86_64 ;; \ esac && \ curl -fsSL -v -o ~/miniconda.sh -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-${MINICONDA_ARCH}.sh" -COPY requirements.txt . +COPY requirements.txt requirements-build.txt . # Manually invoke bash on miniconda script per https://github.com/conda/conda/issues/10431 RUN chmod +x ~/miniconda.sh && \ bash ~/miniconda.sh -b -p /opt/conda && \ diff --git a/README.md b/README.md index e566f1356d9c..6d995f130e70 100644 --- a/README.md +++ b/README.md @@ -294,14 +294,14 @@ Install PyTorch ```bash export CMAKE_PREFIX_PATH="${CONDA_PREFIX:-'$(dirname $(which conda))/../'}:${CMAKE_PREFIX_PATH}" -python -m pip install -r requirements.txt +python -m pip install -r requirements-build.txt python -m pip install --no-build-isolation -v -e . ``` **On macOS** ```bash -python -m pip install -r requirements.txt +python -m pip install -r requirements-build.txt python -m pip install --no-build-isolation -v -e . ``` diff --git a/requirements-build.txt b/requirements-build.txt new file mode 100644 index 000000000000..be19d987f73d --- /dev/null +++ b/requirements-build.txt @@ -0,0 +1,10 @@ +# Build System requirements +setuptools>=70.1.0,<80.0 # setuptools develop deprecated on 80.0 +cmake>=3.27 +ninja +numpy +packaging +pyyaml +requests +six # dependency chain: NNPACK -> PeachPy -> six +typing-extensions>=4.10.0 diff --git a/requirements.txt b/requirements.txt index 4526f303c046..2f585def9f19 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,7 @@ # Python dependencies required for development # Build System requirements -setuptools>=70.1.0,<80.0 # setuptools develop deprecated on 80.0 -cmake>=3.27 -ninja -numpy -packaging -pyyaml -requests -six # dependency chain: NNPACK -> PeachPy -> six -typing-extensions>=4.10.0 +--requirement requirements-build.txt # Install / Development extra requirements build[uv] # for building sdist and wheel