{
    "componentChunkName": "component---src-templates-blog-post-tsx",
    "path": "/1337/how-to-quickly-install-python-on-a-mac/",
    "result": {"data":{"site":{"siteMetadata":{"title":"It's Fred"}},"mdx":{"id":"0bd25cfb-25ed-5b6d-9b16-c3a5c139d8e5","excerpt":"After trying various installation methods the past few years, Miniforge wins out on \"just works\" when it comes to installing an up to date Python distribution…","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"How to quickly install modern Python versions on a Mac (including M1 Macs)\",\n  \"date\": \"2020-12-28T06:00:00.000Z\",\n  \"lastModified\": \"2020-12-28T06:00:00.000Z\",\n  \"description\": \"Use this bash two-liner for installing a minimal Python 3 distribution (Miniforge) anywhere you need an up to date Python distribution on a Mac (including M1 Macs).\",\n  \"isHidden\": false,\n  \"discussionId\": \"how-i-install-python-on-a-mac\",\n  \"redirect_from\": [\"/1337/how-i-install-python-on-a-mac/\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, \"After trying various installation methods the past few years, Miniforge wins out on \\u201Cjust works\\u201D when it comes to installing an up to date Python distribution on a Mac (including M1 Macs):\"), mdx(\"pre\", {\n    \"className\": \"grvsc-container light-visual-studio\",\n    \"data-language\": \"bash\",\n    \"data-index\": \"0\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"grvsc-code\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"grvsc-line\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"grvsc-source\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"mtk1\"\n  }, \"brew install miniforge\"))), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"grvsc-line\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"grvsc-source\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"mtk1\"\n  }, \"conda init\"))))), mdx(\"p\", null, \"For changes to take effect, close and re-open your current shell.\"), mdx(\"h2\", null, \"Next steps\"), mdx(\"p\", null, \"Only one Python version is available \\u201Cby default\\u201D in new terminal windows (eg 3.9). Use the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"conda\"), \" command to install any version of Python 3 (3.7, 3.8, etc) independently of each other.\"), mdx(\"p\", null, \"Eg if you want to run Python 3.10:\"), mdx(\"pre\", {\n    \"className\": \"grvsc-container light-visual-studio\",\n    \"data-language\": \"\",\n    \"data-index\": \"1\"\n  }, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"grvsc-code\"\n  }, mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"grvsc-line\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"grvsc-source\"\n  }, \"conda update -n base -c defaults conda # once, to make sure Python 3.10 is available\")), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"grvsc-line\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"grvsc-source\"\n  }, \"conda create -n python310 python=3.10 # once per python version\")), \"\\n\", mdx(\"span\", {\n    parentName: \"code\",\n    \"className\": \"grvsc-line\"\n  }, mdx(\"span\", {\n    parentName: \"span\",\n    \"className\": \"grvsc-source\"\n  }, \"conda activate python310 # every time you want to access Python 3.10 in a terminal\")))), mdx(\"p\", null, \"Note that use of Miniforge does not require you to use conda to install and maintain all packages. Feel free to use \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"venv\"), \" \\u201Cas usual\\u201D. Conda is just a clean way of installing Python (and it\\u2019s various versions) cleanly on a Mac as per above.\"), mdx(\"style\", {\n    \"className\": \"grvsc-styles\"\n  }, \"\\n  .grvsc-container {\\n    overflow: auto;\\n    position: relative;\\n    -webkit-overflow-scrolling: touch;\\n    padding-top: 1rem;\\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\\n    padding-bottom: 1rem;\\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\\n    border-radius: 8px;\\n    border-radius: var(--grvsc-border-radius, 8px);\\n    font-feature-settings: normal;\\n    line-height: 1.4;\\n  }\\n  \\n  .grvsc-code {\\n    display: table;\\n  }\\n  \\n  .grvsc-line {\\n    display: table-row;\\n    box-sizing: border-box;\\n    width: 100%;\\n    position: relative;\\n  }\\n  \\n  .grvsc-line > * {\\n    position: relative;\\n  }\\n  \\n  .grvsc-gutter-pad {\\n    display: table-cell;\\n    padding-left: 0.75rem;\\n    padding-left: calc(var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem)) / 2);\\n  }\\n  \\n  .grvsc-gutter {\\n    display: table-cell;\\n    -webkit-user-select: none;\\n    -moz-user-select: none;\\n    user-select: none;\\n  }\\n  \\n  .grvsc-gutter::before {\\n    content: attr(data-content);\\n  }\\n  \\n  .grvsc-source {\\n    display: table-cell;\\n    padding-left: 1.5rem;\\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\\n    padding-right: 1.5rem;\\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\\n  }\\n  \\n  .grvsc-source:empty::after {\\n    content: ' ';\\n    -webkit-user-select: none;\\n    -moz-user-select: none;\\n    user-select: none;\\n  }\\n  \\n  .grvsc-gutter + .grvsc-source {\\n    padding-left: 0.75rem;\\n    padding-left: calc(var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem)) / 2);\\n  }\\n  \\n  /* Line transformer styles */\\n  \\n  .grvsc-has-line-highlighting > .grvsc-code > .grvsc-line::before {\\n    content: ' ';\\n    position: absolute;\\n    width: 100%;\\n  }\\n  \\n  .grvsc-line-diff-add::before {\\n    background-color: var(--grvsc-line-diff-add-background-color, rgba(0, 255, 60, 0.2));\\n  }\\n  \\n  .grvsc-line-diff-del::before {\\n    background-color: var(--grvsc-line-diff-del-background-color, rgba(255, 0, 20, 0.2));\\n  }\\n  \\n  .grvsc-line-number {\\n    padding: 0 2px;\\n    text-align: right;\\n    opacity: 0.7;\\n  }\\n  \\n  .light-visual-studio {\\n    background-color: #FFFFFF;\\n    color: #000000;\\n  }\\n  .light-visual-studio .mtk1 { color: #000000; }\\n  .light-visual-studio .grvsc-line-highlighted::before {\\n    background-color: var(--grvsc-line-highlighted-background-color, rgba(0, 0, 0, 0.05));\\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, rgba(0, 0, 0, 0.2));\\n  }\\n\"));\n}\n;\nMDXContent.isMDXComponent = true;","fields":{"slug":"/1337/how-to-quickly-install-python-on-a-mac/","readingTime":{"text":"2 min read","time":70800,"words":236},"discussionId":"how-i-install-python-on-a-mac"},"frontmatter":{"title":"How to quickly install modern Python versions on a Mac (including M1 Macs)","date":"December 28, 2020","lastModified":"December 28, 2020","description":"Use this bash two-liner for installing a minimal Python 3 distribution (Miniforge) anywhere you need an up to date Python distribution on a Mac (including M1 Macs)."}}},"pageContext":{"slug":"/1337/how-to-quickly-install-python-on-a-mac/","previous":{"fields":{"slug":"/quagmires/objectiveness-dont-win-no-elections/"},"frontmatter":{"title":"Objectiveness don't win no elections"}},"next":{"fields":{"slug":"/vr-ar-mr-xr/getting-the-most-out-of-cheap-vr/"},"frontmatter":{"title":"the-problems-and-limits-of-cheap-vr-in-early-2021"}}}},
    "staticQueryHashes": ["1833177543","3096804680","3153540884"]}