diff --git a/README.md b/README.md
index 84b2e642..74e77aec 100644
--- a/README.md
+++ b/README.md
@@ -357,7 +357,7 @@ If you are experiencing problems while configuring Python on your self-hosted ru
 ### Linux
 
 - The Python packages that are downloaded from `actions/python-versions` are originally compiled from source in `/opt/hostedtoolcache/` with the [--enable-shared](https://github.com/actions/python-versions/blob/94f04ae6806c6633c82db94c6406a16e17decd5c/builders/ubuntu-python-builder.psm1#L35) flag, which makes them non-relocatable.
-- Create an environment variable called `AGENT_TOOLSDIRECTORY` and set it to `/opt/hostedtoolcache`. This controls where the runner downloads and installs tools.
+- By default runner downloads and install the tools to `/opt/hostedtoolcache`. The environment variable called `AGENT_TOOLSDIRECTORY` can be set to change this location.
   - In the same shell that your runner is using, type `export AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache`.
   - A more permanent way of setting the environment variable is to create a `.env` file in the same directory as your runner and to add `AGENT_TOOLSDIRECTORY=/opt/hostedtoolcache`. This ensures the variable is always set if your runner is configured as a service.
 - Create a directory called `hostedtoolcache` inside `/opt`.
diff --git a/dist/setup/index.js b/dist/setup/index.js
index 9f8f0d51..d23dffa6 100644
--- a/dist/setup/index.js
+++ b/dist/setup/index.js
@@ -65287,13 +65287,16 @@ function resolveVersionInput() {
 function run() {
     var _a;
     return __awaiter(this, void 0, void 0, function* () {
-        if ((_a = process.env.AGENT_TOOLSDIRECTORY) === null || _a === void 0 ? void 0 : _a.trim()) {
-            core.debug(`Python is expected to be installed into AGENT_TOOLSDIRECTORY=${process.env['AGENT_TOOLSDIRECTORY']}`);
+        // According to the README windows binaries do not require to be installed
+        // in the specific location, but Mac and Linux do
+        if (!utils_1.IS_WINDOWS && !((_a = process.env.AGENT_TOOLSDIRECTORY) === null || _a === void 0 ? void 0 : _a.trim())) {
+            if (utils_1.IS_LINUX)
+                process.env['AGENT_TOOLSDIRECTORY'] = '/opt/hostedtoolcache';
+            else
+                process.env['AGENT_TOOLSDIRECTORY'] = '/Users/runner/hostedtoolcache';
             process.env['RUNNER_TOOL_CACHE'] = process.env['AGENT_TOOLSDIRECTORY'];
         }
-        else {
-            core.debug(`Python is expected to be installed into RUNNER_TOOL_CACHE==${process.env['RUNNER_TOOL_CACHE']}`);
-        }
+        core.debug(`Python is expected to be installed into RUNNER_TOOL_CACHE=${process.env['RUNNER_TOOL_CACHE']}`);
         try {
             const version = resolveVersionInput();
             if (version) {
diff --git a/src/setup-python.ts b/src/setup-python.ts
index 55bf4971..db17735b 100644
--- a/src/setup-python.ts
+++ b/src/setup-python.ts
@@ -5,7 +5,7 @@ import * as path from 'path';
 import * as os from 'os';
 import fs from 'fs';
 import {getCacheDistributor} from './cache-distributions/cache-factory';
-import {isCacheFeatureAvailable} from './utils';
+import {isCacheFeatureAvailable, IS_LINUX, IS_WINDOWS} from './utils';
 
 function isPyPyVersion(versionSpec: string) {
   return versionSpec.startsWith('pypy');
@@ -61,16 +61,16 @@ function resolveVersionInput(): string {
 }
 
 async function run() {
-  if (process.env.AGENT_TOOLSDIRECTORY?.trim()) {
-    core.debug(
-      `Python is expected to be installed into AGENT_TOOLSDIRECTORY=${process.env['AGENT_TOOLSDIRECTORY']}`
-    );
+  // According to the README windows binaries do not require to be installed
+  // in the specific location, but Mac and Linux do
+  if (!IS_WINDOWS && !process.env.AGENT_TOOLSDIRECTORY?.trim()) {
+    if (IS_LINUX) process.env['AGENT_TOOLSDIRECTORY'] = '/opt/hostedtoolcache';
+    else process.env['AGENT_TOOLSDIRECTORY'] = '/Users/runner/hostedtoolcache';
     process.env['RUNNER_TOOL_CACHE'] = process.env['AGENT_TOOLSDIRECTORY'];
-  } else {
-    core.debug(
-      `Python is expected to be installed into RUNNER_TOOL_CACHE==${process.env['RUNNER_TOOL_CACHE']}`
-    );
   }
+  core.debug(
+    `Python is expected to be installed into RUNNER_TOOL_CACHE=${process.env['RUNNER_TOOL_CACHE']}`
+  );
   try {
     const version = resolveVersionInput();
     if (version) {