{"id":19148,"date":"2022-01-31T17:27:58","date_gmt":"2022-01-31T11:57:58","guid":{"rendered":"http:\/\/www.pythonpool.com\/?p=19148"},"modified":"2026-07-13T12:38:36","modified_gmt":"2026-07-13T07:08:36","slug":"pyspark_driver_python","status":"publish","type":"post","link":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/","title":{"rendered":"Set PYSPARK_DRIVER_PYTHON in PySpark Safely"},"content":{"rendered":"<p><strong>Quick answer:<\/strong> PySpark driver and executor processes can use different Python executables. Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON for the deployment mode, make paths available to workers, and verify versions in both driver and executor code.<\/p>\n<figure class=\"pythonpool-article-visual\"><img src=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-b124.png\" alt=\"Python Pool infographic separating PySpark driver and executor Python environments across local mode, cluster mode, paths, and validation\" width=\"1536\" height=\"1054\" loading=\"lazy\" decoding=\"async\"><figcaption>PySpark has a driver process and executor processes; Python executable settings must match the deployment mode and should not be copied blindly from local-shell examples.<\/figcaption><\/figure>\n<p><code>PYSPARK_DRIVER_PYTHON<\/code> tells PySpark which Python executable should run the driver process. The driver is the Python process that starts your <code>SparkSession<\/code>, sends work to Spark, and receives results. If it uses a different Python environment from the executors, you can see import errors, version mismatch errors, or notebooks that start with the wrong interpreter.<\/p>\n<p>Spark&#8217;s current <a href=\"https:\/\/spark.apache.org\/docs\/latest\/configuration.html\">configuration documentation<\/a> lists the related <code>spark.pyspark.driver.python<\/code> and <code>spark.pyspark.python<\/code> settings. The <a href=\"https:\/\/spark.apache.org\/docs\/latest\/api\/python\/tutorial\/python_packaging.html\">PySpark Python packaging guide<\/a> also warns that <code>PYSPARK_DRIVER_PYTHON<\/code> should not be set for YARN or Kubernetes cluster modes. That distinction matters: local notebooks, client-mode jobs, and cluster-mode submissions need different handling.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #990303;color:#990303\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #990303;color:#990303\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Quick_answer\" >Quick answer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#1_Check_the_current_driver_Python\" >1. Check the current driver Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#2_Set_it_before_SparkSession_starts\" >2. Set it before SparkSession starts<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#3_Use_notebooks_carefully\" >3. Use notebooks carefully<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#4_Configure_executors_separately\" >4. Configure executors separately<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#5_Inspect_Sparks_active_Python_settings\" >5. Inspect Spark&#8217;s active Python settings<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#6_Detect_driver_and_worker_mismatches\" >6. Detect driver and worker mismatches<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Common_mistakes\" >Common mistakes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Driver_vs_executor_rule\" >Driver vs executor rule<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Separate_Processes\" >Separate Processes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Distinguish_Variables\" >Distinguish Variables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Avoid_Local_Settings_In_Clusters\" >Avoid Local Settings In Clusters<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Package_The_Runtime\" >Package The Runtime<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Debug_Paths_And_Versions\" >Debug Paths And Versions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Test_Small_Distributed_Jobs\" >Test Small Distributed Jobs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Frequently_Asked_Questions\" >Frequently Asked Questions<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#What_does_PYSPARK_DRIVER_PYTHON_control\" >What does PYSPARK_DRIVER_PYTHON control?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Is_PYSPARK_DRIVER_PYTHON_the_same_as_PYSPARK_PYTHON\" >Is PYSPARK_DRIVER_PYTHON the same as PYSPARK_PYTHON?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#Should_I_set_PYSPARK_DRIVER_PYTHON_in_cluster_mode\" >Should I set PYSPARK_DRIVER_PYTHON in cluster mode?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#How_do_I_debug_a_Python_executable_mismatch\" >How do I debug a Python executable mismatch?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Quick_answer\"><\/span>Quick answer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Set <code>PYSPARK_DRIVER_PYTHON<\/code> before Spark starts when you need to choose the Python interpreter for the driver. Set <code>PYSPARK_PYTHON<\/code> or <code>spark.pyspark.python<\/code> for the Python executable used by workers and executors. In cluster mode, avoid forcing the driver with <code>PYSPARK_DRIVER_PYTHON<\/code>; configure the cluster submission instead.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"1_Check_the_current_driver_Python\"><\/span>1. Check the current driver Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Start by checking the Python executable that launches your script, shell, or notebook. If this is already the interpreter you want, you may not need to set the driver variable at all.<\/p>\n<div class=\"pythonpool-code-scroll\" style=\"max-width:105%;overflow-x:auto;-webkit-overflow-scrolling:touch;\">\n<pre><code class=\"language-python\">import sys\n\nprint(\"Driver executable:\", sys.executable)\nprint(\"Driver Python:\", sys.version)\n<\/code><\/pre>\n<\/div>\n<p>If the path points to the wrong environment, fix that before creating <code>SparkSession<\/code>. Environment variables that are set after Spark starts are often too late to affect the already-running driver process.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"2_Set_it_before_SparkSession_starts\"><\/span>2. Set it before SparkSession starts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>For local development, the safest pattern is to set the environment variables at the very top of the script, before importing or creating a Spark session. Using <code>sys.executable<\/code> keeps the setting aligned with the Python process running the script.<\/p>\n<div class=\"pythonpool-code-scroll\" style=\"max-width:105%;overflow-x:auto;-webkit-overflow-scrolling:touch;\">\n<pre><code class=\"language-python\">import os\nimport sys\n\nos.environ[\"PYSPARK_DRIVER_PYTHON\"] = sys.executable\nos.environ[\"PYSPARK_PYTHON\"] = sys.executable\n\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.master(\"local[*]\").appName(\"driver-python-check\").getOrCreate()\n<\/code><\/pre>\n<\/div>\n<p>This is useful for local tests, small scripts, and development machines where the same virtual environment should run the driver and local workers. If you recently recreated the environment, our guide on <a href=\"https:\/\/www.pythonpool.com\/remove-python-venv\/\">removing a Python venv safely<\/a> can help clean stale interpreter paths.<\/p>\n<p><!-- Python Pool visual layout repair 2026-07-13 --><\/p>\n<figure class=\"pythonpool-article-visual pythonpool-supporting-visual\"><img src=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-driver-b124.png\" alt=\"Python Pool infographic showing a PySpark driver creating a session and collecting results\" width=\"1536\" height=\"1054\" loading=\"lazy\" decoding=\"async\"><figcaption>Driver: A PySpark driver creating a session and collecting results.<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"3_Use_notebooks_carefully\"><\/span>3. Use notebooks carefully<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In notebook workflows, the driver may be a notebook kernel rather than a plain Python script. Older examples often set <code>PYSPARK_DRIVER_PYTHON<\/code> to <code>jupyter<\/code> and pass notebook options, but that should be done only for local interactive sessions, not for cluster-mode submissions.<\/p>\n<div class=\"pythonpool-code-scroll\" style=\"max-width:105%;overflow-x:auto;-webkit-overflow-scrolling:touch;\">\n<pre><code class=\"language-python\">import os\nimport sys\n\nos.environ[\"PYSPARK_DRIVER_PYTHON\"] = \"jupyter\"\nos.environ[\"PYSPARK_DRIVER_PYTHON_OPTS\"] = \"notebook\"\nos.environ[\"PYSPARK_PYTHON\"] = sys.executable\n<\/code><\/pre>\n<\/div>\n<p>If you are already inside Jupyter, you usually do not need to launch another notebook from PySpark. Instead, align <code>PYSPARK_PYTHON<\/code> with the kernel environment and create the Spark session from that kernel.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"4_Configure_executors_separately\"><\/span>4. Configure executors separately<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The driver setting does not automatically guarantee the same Python exists on every executor. For packaged environments, Spark can distribute archives or files and point executors at the shipped Python. The Spark install guide explains supported PySpark installation routes in the current release.<\/p>\n<div class=\"pythonpool-code-scroll\" style=\"max-width:105%;overflow-x:auto;-webkit-overflow-scrolling:touch;\">\n<pre><code class=\"language-python\">from pyspark.sql import SparkSession\n\nspark = (\n    SparkSession.builder\n    .config(\"spark.pyspark.python\", \".\/environment\/bin\/python\")\n    .appName(\"executor-python\")\n    .getOrCreate()\n)\n<\/code><\/pre>\n<\/div>\n<p>Use this style when executors should run a packaged Python environment. In YARN or Kubernetes cluster mode, follow Spark&#8217;s packaging guidance and avoid setting <code>PYSPARK_DRIVER_PYTHON<\/code> in a way that points the cluster driver to a local-only executable.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"5_Inspect_Sparks_active_Python_settings\"><\/span>5. Inspect Spark&#8217;s active Python settings<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When debugging, inspect Spark&#8217;s effective configuration. This helps you see whether environment variables were picked up or whether explicit Spark configuration values are overriding them.<\/p>\n<div class=\"pythonpool-code-scroll\" style=\"max-width:105%;overflow-x:auto;-webkit-overflow-scrolling:touch;\">\n<pre><code class=\"language-python\">from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.getOrCreate()\nconf = spark.sparkContext.getConf()\n\nfor key in (\"spark.pyspark.driver.python\", \"spark.pyspark.python\"):\n    print(key, conf.get(key, \"&lt;not set&gt;\"))\n<\/code><\/pre>\n<\/div>\n<p>If a Spark config key is set, it can be more important than the shell environment variable. Keep the settings in one place when possible so local scripts, notebooks, and submitted jobs do not drift apart.<\/p>\n<figure class=\"pythonpool-article-visual pythonpool-supporting-visual\"><img src=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-executor-b124.png\" alt=\"Python Pool infographic showing Spark tasks, Python workers, serialization, and partitions\" width=\"1536\" height=\"1054\" loading=\"lazy\" decoding=\"async\"><figcaption>Executors: Spark tasks, Python workers, serialization, and partitions.<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"6_Detect_driver_and_worker_mismatches\"><\/span>6. Detect driver and worker mismatches<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A classic PySpark failure is a driver running one Python minor version while workers run another. You can collect a small worker-side value to compare the versions before running a larger job.<\/p>\n<div class=\"pythonpool-code-scroll\" style=\"max-width:105%;overflow-x:auto;-webkit-overflow-scrolling:touch;\">\n<pre><code class=\"language-python\">import sys\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.getOrCreate()\nsc = spark.sparkContext\n\ndriver_version = sys.version_info[:2]\nworker_versions = sc.parallelize([0], 1).map(lambda _: __import__(\"sys\").version_info[:2]).collect()\n\nprint(\"Driver:\", driver_version)\nprint(\"Workers:\", worker_versions)\n<\/code><\/pre>\n<\/div>\n<p>If the driver and worker versions differ, fix the environment before debugging application code. It is usually faster to correct the interpreter path than to chase package import errors caused by a mismatched runtime.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Common_mistakes\"><\/span>Common mistakes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Setting <code>PYSPARK_DRIVER_PYTHON<\/code> after <code>SparkSession<\/code> already exists.<\/li>\n<li>Using a local virtual environment path for executors that run on remote machines.<\/li>\n<li>Setting the driver variable in YARN or Kubernetes cluster mode when Spark&#8217;s packaging guide says not to.<\/li>\n<li>Assuming <code>PYSPARK_DRIVER_PYTHON<\/code> and <code>PYSPARK_PYTHON<\/code> control the same process.<\/li>\n<li>Forgetting to verify the Python version in the active environment. Our <a href=\"https:\/\/www.pythonpool.com\/how-to-check-python-version\/\">Python version check<\/a> guide covers that step.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Driver_vs_executor_rule\"><\/span>Driver vs executor rule<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Use <code>PYSPARK_DRIVER_PYTHON<\/code> for the process that creates and controls the Spark application. Use <code>PYSPARK_PYTHON<\/code> or <code>spark.pyspark.python<\/code> for Python processes that run tasks. If your next issue is about RDD transformations, our <a href=\"https:\/\/www.pythonpool.com\/python-flatmap\/\">PySpark flatMap guide<\/a> explains one of the common worker-side operations.<\/p>\n<figure class=\"pythonpool-article-visual pythonpool-supporting-visual\"><img src=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-cluster-b124.png\" alt=\"Python Pool infographic comparing local, client, cluster, and Python environment settings\" width=\"1536\" height=\"1054\" loading=\"lazy\" decoding=\"async\"><figcaption>Cluster modes: Local, client, cluster, and Python environment settings.<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Separate_Processes\"><\/span>Separate Processes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The driver coordinates the application while executors run distributed tasks. A Python path that works on the driver may not exist or have the same packages on workers.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Distinguish_Variables\"><\/span>Distinguish Variables<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>PYSPARK_DRIVER_PYTHON controls the driver in supported contexts, while PYSPARK_PYTHON identifies the Python used for PySpark processes. Follow the Spark version and cluster-manager guidance.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Avoid_Local_Settings_In_Clusters\"><\/span>Avoid Local Settings In Clusters<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Interactive local-shell settings can interfere with cluster submission. Keep local development configuration separate from production submission and worker environment configuration.<\/p>\n<figure class=\"pythonpool-article-visual pythonpool-supporting-visual\"><img src=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-debug-b124.png\" alt=\"Python Pool infographic tracing PySpark versions, paths, logs, tests, and reproducibility\" width=\"1536\" height=\"1054\" loading=\"lazy\" decoding=\"async\"><figcaption>Debug Python: PySpark versions, paths, logs, tests, and reproducibility.<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Package_The_Runtime\"><\/span>Package The Runtime<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Use a reproducible environment, archive, container, or cluster-supported distribution so the executable and dependencies are available on every executor.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Debug_Paths_And_Versions\"><\/span>Debug Paths And Versions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Print sanitized executable and version information on the driver and inside a small executor task. Compare import paths, Python versions, Spark version, and environment variables.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Test_Small_Distributed_Jobs\"><\/span>Test Small Distributed Jobs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Test local and cluster modes, a simple map, serialization, native dependencies, worker startup, failure reporting, and clean shutdown before running a large job.<\/p>\n<p>Use the <a href=\"https:\/\/spark.apache.org\/docs\/latest\/api\/python\/getting_started\/index.html\">official PySpark documentation<\/a> and the Spark deployment guide for the cluster manager. Related Python Pool references include <a href=\"https:\/\/www.pythonpool.com\/python-testing-framework\/\">testing<\/a> and <a href=\"https:\/\/www.pythonpool.com\/python-logging\/\">logging<\/a>.<\/p>\n<p>For related distributed workflows, compare <a href=\"https:\/\/www.pythonpool.com\/python-testing-framework\/\">worker tests<\/a>, <a href=\"https:\/\/www.pythonpool.com\/python-logging\/\">driver diagnostics<\/a>, and <a href=\"1\">environment mappings<\/a> before changing PySpark paths.<\/p>\n<p data-pythonpool-source-set=\"2026-07-13\">For the authoritative API and current behavior, consult the <a href=\"https:\/\/spark.apache.org\/docs\/latest\/api\/python\/getting_started\/install.html\">PySpark installation documentation<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Frequently_Asked_Questions\"><\/span>Frequently Asked Questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"What_does_PYSPARK_DRIVER_PYTHON_control\"><\/span>What does PYSPARK_DRIVER_PYTHON control?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>It identifies the Python executable used for the PySpark driver process in configurations where that environment variable is honored.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Is_PYSPARK_DRIVER_PYTHON_the_same_as_PYSPARK_PYTHON\"><\/span>Is PYSPARK_DRIVER_PYTHON the same as PYSPARK_PYTHON?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>No. The driver and executor processes can use separate executable settings, and cluster deployment requires consistent paths and packaging.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Should_I_set_PYSPARK_DRIVER_PYTHON_in_cluster_mode\"><\/span>Should I set PYSPARK_DRIVER_PYTHON in cluster mode?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Follow the Spark deployment guidance for the cluster manager; a local interactive setting can interfere with launching cluster drivers.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_do_I_debug_a_Python_executable_mismatch\"><\/span>How do I debug a Python executable mismatch?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Print the driver and executor Python versions and paths, verify the environment is available on every worker, and test a small distributed job.<\/p>\n<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What does PYSPARK_DRIVER_PYTHON control?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It identifies the Python executable used for the PySpark driver process in configurations where that environment variable is honored.\"}},{\"@type\":\"Question\",\"name\":\"Is PYSPARK_DRIVER_PYTHON the same as PYSPARK_PYTHON?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. The driver and executor processes can use separate executable settings, and cluster deployment requires consistent paths and packaging.\"}},{\"@type\":\"Question\",\"name\":\"Should I set PYSPARK_DRIVER_PYTHON in cluster mode?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Follow the Spark deployment guidance for the cluster manager; a local interactive setting can interfere with launching cluster drivers.\"}},{\"@type\":\"Question\",\"name\":\"How do I debug a Python executable mismatch?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Print the driver and executor Python versions and paths, verify the environment is available on every worker, and test a small distributed job.\"}}]}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.<\/p>\n","protected":false},"author":25,"featured_media":33345,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4345],"tags":[4787,4785,4788,4790,4793,4789,4791,4786,4792],"class_list":["post-19148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-module","tag-pyspark-pyspark_driver_python","tag-pyspark_driver_python-and-pyspark_driver_python_opts","tag-pyspark_driver_python-set","tag-pyspark_driver_python-spyder","tag-pyspark_driver_pythonjupyter","tag-pyspark_python-and-pyspark_driver_python","tag-pyspark_python-versus-pyspark_driver_python","tag-set-pyspark_driver_python","tag-spark-pyspark_driver_python","infinite-scroll-item"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.1 (Yoast SEO v28.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Set PYSPARK_DRIVER_PYTHON in PySpark Safely<\/title>\n<meta name=\"description\" content=\"Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Set PYSPARK_DRIVER_PYTHON in PySpark Safely\" \/>\n<meta property=\"og:description\" content=\"Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pythonpool.com\/pyspark_driver_python\/\" \/>\n<meta property=\"og:site_name\" content=\"Python Pool\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-31T11:57:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-13T07:08:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-b124.png\" \/>\n<meta name=\"author\" content=\"Rishav Raj\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Python Pool\" \/>\n<meta name=\"twitter:description\" content=\"Practical Python tutorials, error fixes, code examples, and project guides.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-b124.png\" \/>\n<meta name=\"twitter:creator\" content=\"@pythonpool\" \/>\n<meta name=\"twitter:site\" content=\"@pythonpool\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rishav Raj\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/\"},\"author\":{\"name\":\"Rishav Raj\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#\\\/schema\\\/person\\\/025222e28182ecbb97e17f9f1bf15ac4\"},\"headline\":\"Set PYSPARK_DRIVER_PYTHON in PySpark Safely\",\"datePublished\":\"2022-01-31T11:57:58+00:00\",\"dateModified\":\"2026-07-13T07:08:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/\"},\"wordCount\":1116,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pythonpool.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/pyspark-driver-python-guide-pythonpool.png\",\"keywords\":[\"pyspark pyspark_driver_python\",\"pyspark_driver_python and pyspark_driver_python_opts\",\"pyspark_driver_python set\",\"pyspark_driver_python spyder\",\"pyspark_driver_python=jupyter\",\"pyspark_python and pyspark_driver_python\",\"pyspark_python versus pyspark_driver_python\",\"set pyspark_driver_python\",\"spark pyspark_driver_python\"],\"articleSection\":[\"Module\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/\",\"url\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/\",\"name\":\"Set PYSPARK_DRIVER_PYTHON in PySpark Safely\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pythonpool.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/pyspark-driver-python-guide-pythonpool.png\",\"datePublished\":\"2022-01-31T11:57:58+00:00\",\"dateModified\":\"2026-07-13T07:08:36+00:00\",\"description\":\"Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.pythonpool.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/pyspark-driver-python-guide-pythonpool.png\",\"contentUrl\":\"https:\\\/\\\/www.pythonpool.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/pyspark-driver-python-guide-pythonpool.png\",\"width\":1350,\"height\":650,\"caption\":\"PYSPARK_DRIVER_PYTHON guide showing driver executor Python settings and SparkSession environment setup\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/pyspark_driver_python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pythonpool.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set PYSPARK_DRIVER_PYTHON in PySpark Safely\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#website\",\"url\":\"https:\\\/\\\/www.pythonpool.com\\\/\",\"name\":\"Python Pool\",\"description\":\"Practical Python tutorials, error fixes, code examples, and project guides.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pythonpool.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#organization\",\"name\":\"Python Pool\",\"url\":\"https:\\\/\\\/www.pythonpool.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.pythonpool.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/aa.png\",\"contentUrl\":\"https:\\\/\\\/www.pythonpool.com\\\/wp-content\\\/uploads\\\/2020\\\/08\\\/aa.png\",\"width\":452,\"height\":185,\"caption\":\"Python Pool\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/pythonpool\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/pythonpool\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.pythonpool.com\\\/#\\\/schema\\\/person\\\/025222e28182ecbb97e17f9f1bf15ac4\",\"name\":\"Rishav Raj\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/77d441cf39fc8183322bfc1dcaf04be5c1fd429574820606cccac81fd8e8749a?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/77d441cf39fc8183322bfc1dcaf04be5c1fd429574820606cccac81fd8e8749a?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/77d441cf39fc8183322bfc1dcaf04be5c1fd429574820606cccac81fd8e8749a?s=96&d=wavatar&r=g\",\"caption\":\"Rishav Raj\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Set PYSPARK_DRIVER_PYTHON in PySpark Safely","description":"Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/","og_locale":"en_US","og_type":"article","og_title":"Set PYSPARK_DRIVER_PYTHON in PySpark Safely","og_description":"Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.","og_url":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/","og_site_name":"Python Pool","article_published_time":"2022-01-31T11:57:58+00:00","article_modified_time":"2026-07-13T07:08:36+00:00","og_image":[{"url":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-b124.png","type":"","width":"","height":""}],"author":"Rishav Raj","twitter_card":"summary_large_image","twitter_title":"Python Pool","twitter_description":"Practical Python tutorials, error fixes, code examples, and project guides.","twitter_image":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-b124.png","twitter_creator":"@pythonpool","twitter_site":"@pythonpool","twitter_misc":{"Written by":"Rishav Raj","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#article","isPartOf":{"@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/"},"author":{"name":"Rishav Raj","@id":"https:\/\/www.pythonpool.com\/#\/schema\/person\/025222e28182ecbb97e17f9f1bf15ac4"},"headline":"Set PYSPARK_DRIVER_PYTHON in PySpark Safely","datePublished":"2022-01-31T11:57:58+00:00","dateModified":"2026-07-13T07:08:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/"},"wordCount":1116,"commentCount":0,"publisher":{"@id":"https:\/\/www.pythonpool.com\/#organization"},"image":{"@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-guide-pythonpool.png","keywords":["pyspark pyspark_driver_python","pyspark_driver_python and pyspark_driver_python_opts","pyspark_driver_python set","pyspark_driver_python spyder","pyspark_driver_python=jupyter","pyspark_python and pyspark_driver_python","pyspark_python versus pyspark_driver_python","set pyspark_driver_python","spark pyspark_driver_python"],"articleSection":["Module"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.pythonpool.com\/pyspark_driver_python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/","url":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/","name":"Set PYSPARK_DRIVER_PYTHON in PySpark Safely","isPartOf":{"@id":"https:\/\/www.pythonpool.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#primaryimage"},"image":{"@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-guide-pythonpool.png","datePublished":"2022-01-31T11:57:58+00:00","dateModified":"2026-07-13T07:08:36+00:00","description":"Configure PYSPARK_DRIVER_PYTHON and PYSPARK_PYTHON by separating driver and executor environments, local mode, cluster mode, paths, and reproducible tests.","breadcrumb":{"@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pythonpool.com\/pyspark_driver_python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#primaryimage","url":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-guide-pythonpool.png","contentUrl":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2026\/07\/pyspark-driver-python-guide-pythonpool.png","width":1350,"height":650,"caption":"PYSPARK_DRIVER_PYTHON guide showing driver executor Python settings and SparkSession environment setup"},{"@type":"BreadcrumbList","@id":"https:\/\/www.pythonpool.com\/pyspark_driver_python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pythonpool.com\/"},{"@type":"ListItem","position":2,"name":"Set PYSPARK_DRIVER_PYTHON in PySpark Safely"}]},{"@type":"WebSite","@id":"https:\/\/www.pythonpool.com\/#website","url":"https:\/\/www.pythonpool.com\/","name":"Python Pool","description":"Practical Python tutorials, error fixes, code examples, and project guides.","publisher":{"@id":"https:\/\/www.pythonpool.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pythonpool.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.pythonpool.com\/#organization","name":"Python Pool","url":"https:\/\/www.pythonpool.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pythonpool.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2020\/08\/aa.png","contentUrl":"https:\/\/www.pythonpool.com\/wp-content\/uploads\/2020\/08\/aa.png","width":452,"height":185,"caption":"Python Pool"},"image":{"@id":"https:\/\/www.pythonpool.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/pythonpool","https:\/\/www.youtube.com\/c\/pythonpool"]},{"@type":"Person","@id":"https:\/\/www.pythonpool.com\/#\/schema\/person\/025222e28182ecbb97e17f9f1bf15ac4","name":"Rishav Raj","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/77d441cf39fc8183322bfc1dcaf04be5c1fd429574820606cccac81fd8e8749a?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/77d441cf39fc8183322bfc1dcaf04be5c1fd429574820606cccac81fd8e8749a?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/77d441cf39fc8183322bfc1dcaf04be5c1fd429574820606cccac81fd8e8749a?s=96&d=wavatar&r=g","caption":"Rishav Raj"}}]}},"_links":{"self":[{"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/posts\/19148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/comments?post=19148"}],"version-history":[{"count":29,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/posts\/19148\/revisions"}],"predecessor-version":[{"id":41824,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/posts\/19148\/revisions\/41824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/media\/33345"}],"wp:attachment":[{"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/media?parent=19148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/categories?post=19148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pythonpool.com\/wp-json\/wp\/v2\/tags?post=19148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}