René's URL Explorer Experiment


Title: Using PyInstaller to Easily Distribute Python Applications – Real Python

Open Graph Title: Using PyInstaller to Easily Distribute Python Applications – Real Python

Description: In this step-by-step tutorial, you'll learn how to use PyInstaller to turn your Python application into an executable with no dependencies or installation required. This is great if you want to distribute applications to users who may or may not be Python developers.

Open Graph Description: In this step-by-step tutorial, you'll learn how to use PyInstaller to turn your Python application into an executable with no dependencies or installation required. This is great if you want to distribute applications to users who may or may not be Python developers.

Mail addresses
?subject=Python article for you&body=Using PyInstaller to Easily Distribute Python Applications on Real Python https://realpython.com/pyinstaller-python/

Opengraph URL: https://realpython.com/pyinstaller-python/

X: @realpython

direct link

Domain: realpython.com


Hey, it has json ld scripts:
{
  "@context": "http://schema.org",
  "@type": "Article",
  "headline": "Using PyInstaller to Easily Distribute Python Applications",
  "image": {
    "@type": "ImageObject",
    "url": "https://files.realpython.com/media/Distributing-Python-Applications_Watermarked.a9e2de9e4e99.jpg",
    "width": 1920,
    "height": 1080
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://realpython.com/pyinstaller-python/",
    "lastReviewed": "2022-10-07",
    "author": {
      "@type": "Person",
      "name": "Luke Lee",
      "image": "https://realpython.com/cdn-cgi/image/width=1045,height=1045,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/llee.add9ff1ff3f5.jpeg",
      "url": "https://realpython.com/team/llee/",
      "affiliation": {
        "@type": "Organization",
        "@id": "https://realpython.com/#organization",
        "name": "Real Python",
        "url": "https://realpython.com",
        "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
      }
    },
    "reviewedBy": [
      {
        "@type": "Person",
        "name": "Aldren Santos",
        "image": "https://realpython.com/cdn-cgi/image/width=500,height=500,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/Aldren_Santos_Real_Python.6b0861d8b841.png",
        "url": "https://realpython.com/team/asantos/",
        "affiliation": {
          "@type": "Organization",
          "@id": "https://realpython.com/#organization",
          "name": "Real Python",
          "url": "https://realpython.com",
          "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
        }
      },
      {
        "@type": "Person",
        "name": "David Amos",
        "image": "https://realpython.com/cdn-cgi/image/width=400,height=400,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/me-small.f5f49f1c48e1.jpg",
        "url": "https://realpython.com/team/damos/",
        "affiliation": {
          "@type": "Organization",
          "@id": "https://realpython.com/#organization",
          "name": "Real Python",
          "url": "https://realpython.com",
          "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
        }
      },
      {
        "@type": "Person",
        "name": "Joanna Jablonski",
        "image": "https://realpython.com/cdn-cgi/image/width=800,height=800,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/jjablonksi-avatar.e37c4f83308e.jpg",
        "url": "https://realpython.com/team/jjablonski/",
        "affiliation": {
          "@type": "Organization",
          "@id": "https://realpython.com/#organization",
          "name": "Real Python",
          "url": "https://realpython.com",
          "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
        }
      }
    ]
  },
  "datePublished": "2019-03-06T14:00:00+00:00",
  "dateModified": "2022-10-07T16:44:07.229775+00:00",
  "publisher": {
    "@type": "Organization",
    "@id": "https://realpython.com/#organization",
    "name": "Real Python",
    "url": "https://realpython.com",
    "logo": {
      "@type": "ImageObject",
      "url": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png",
      "width": 512,
      "height": 512
    },
    "description": "Real Python is a leading provider of online Python education and one of the largest language-specific online communities for software developers. It publishes high-quality learning resources, such as tutorials, books, and courses to an audience of millions of developers, data scientists, and machine learning engineers each month.",
    "slogan": "Become a Python Expert",
    "email": "info@realpython.com",
    "sameAs": [
      "https://github.com/realpython",
      "https://www.youtube.com/realpython",
      "https://twitter.com/realpython",
      "https://x.com/realpython",
      "https://www.linkedin.com/company/realpython-com/",
      "https://www.facebook.com/learnrealpython",
      "https://www.instagram.com/realpython",
      "https://www.tiktok.com/@realpython.com"
    ]
  },
  "author": {
    "@type": "Person",
    "name": "Luke Lee",
    "image": "https://realpython.com/cdn-cgi/image/width=1045,height=1045,fit=crop,gravity=auto,format=auto/https://files.realpython.com/media/llee.add9ff1ff3f5.jpeg",
    "url": "https://realpython.com/team/llee/",
    "affiliation": {
      "@type": "Organization",
      "@id": "https://realpython.com/#organization",
      "name": "Real Python",
      "url": "https://realpython.com",
      "logo": "https://realpython.com/static/real-python-logo-square-512.157ae6bf64ed.png"
    }
  },
  "description": "In this step-by-step tutorial, you'll learn how to use PyInstaller to turn your Python application into an executable with no dependencies or installation required. This is great if you want to distribute applications to users who may or may not be Python developers."
}

authorReal Python
twitter:cardsummary_large_image
twitter:imagehttps://files.realpython.com/media/Distributing-Python-Applications_Watermarked.a9e2de9e4e99.jpg
og:imagehttps://files.realpython.com/media/Distributing-Python-Applications_Watermarked.a9e2de9e4e99.jpg
twitter:creator@realpython
og:typearticle

Links:

https://realpython.com/
Start Herehttps://realpython.com/start-here/
Learn Python https://realpython.com/pyinstaller-python/
Python Tutorials →In-depth articles and video courseshttps://realpython.com/search?kind=article&kind=course&order=newest
Learning Paths →Guided study plans for accelerated learninghttps://realpython.com/learning-paths/
Quizzes & Exercises →Check your learning progresshttps://realpython.com/quizzes/
Browse Topics →Focus on a specific area or skill levelhttps://realpython.com/tutorials/all/
Community Chat →Learn with other Pythonistashttps://realpython.com/community/
Office Hours →Live Q&A calls with Python expertshttps://realpython.com/office-hours/
Podcast →Hear what’s new in the world of Pythonhttps://realpython.com/podcasts/rpp/
Books →Round out your knowledge and learn offlinehttps://realpython.com/products/books/
Reference →Concise definitions for common Python termshttps://realpython.com/ref/
Code Mentor →BetaPersonalized code assistance & learning toolshttps://realpython.com/mentor/
Unlock All Content →https://realpython.com/account/join/
More https://realpython.com/pyinstaller-python/
Learner Storieshttps://realpython.com/learner-stories/
Python Newsletterhttps://realpython.com/newsletter/
Python Job Boardhttps://www.pythonjobshq.com
Meet the Teamhttps://realpython.com/team/
Become a Tutorial Writerhttps://realpython.com/write-for-us/
Become a Video Instructorhttps://realpython.com/become-an-instructor/
Searchhttps://realpython.com/search
https://realpython.com/search
Joinhttps://realpython.com/account/join/
Sign‑Inhttps://realpython.com/account/login/?next=%2Fpyinstaller-python%2F
Browse Topicshttps://realpython.com/tutorials/all/
Guided Learning Pathshttps://realpython.com/learning-paths/
Basicshttps://realpython.com/search?level=basics
Intermediatehttps://realpython.com/search?level=intermediate
Advancedhttps://realpython.com/search?level=advanced
aihttps://realpython.com/tutorials/ai/
algorithmshttps://realpython.com/tutorials/algorithms/
apihttps://realpython.com/tutorials/api/
best-practiceshttps://realpython.com/tutorials/best-practices/
careerhttps://realpython.com/tutorials/career/
communityhttps://realpython.com/tutorials/community/
databaseshttps://realpython.com/tutorials/databases/
data-sciencehttps://realpython.com/tutorials/data-science/
data-structureshttps://realpython.com/tutorials/data-structures/
data-vizhttps://realpython.com/tutorials/data-viz/
devopshttps://realpython.com/tutorials/devops/
djangohttps://realpython.com/tutorials/django/
dockerhttps://realpython.com/tutorials/docker/
editorshttps://realpython.com/tutorials/editors/
flaskhttps://realpython.com/tutorials/flask/
front-endhttps://realpython.com/tutorials/front-end/
gamedevhttps://realpython.com/tutorials/gamedev/
guihttps://realpython.com/tutorials/gui/
machine-learninghttps://realpython.com/tutorials/machine-learning/
newshttps://realpython.com/tutorials/news/
numpyhttps://realpython.com/tutorials/numpy/
projectshttps://realpython.com/tutorials/projects/
pythonhttps://realpython.com/tutorials/python/
stdlibhttps://realpython.com/tutorials/stdlib/
testinghttps://realpython.com/tutorials/testing/
toolshttps://realpython.com/tutorials/tools/
web-devhttps://realpython.com/tutorials/web-dev/
web-scrapinghttps://realpython.com/tutorials/web-scraping/
Table of Contentshttps://realpython.com/pyinstaller-python/#toc
Distribution Problemshttps://realpython.com/pyinstaller-python/#distribution-problems
PyInstallerhttps://realpython.com/pyinstaller-python/#pyinstaller
Preparing Your Projecthttps://realpython.com/pyinstaller-python/#preparing-your-project
Using PyInstallerhttps://realpython.com/pyinstaller-python/#using-pyinstaller
Digging Into PyInstaller Artifactshttps://realpython.com/pyinstaller-python/#digging-into-pyinstaller-artifacts
Spec Filehttps://realpython.com/pyinstaller-python/#spec-file
Build Folderhttps://realpython.com/pyinstaller-python/#build-folder
Dist Folderhttps://realpython.com/pyinstaller-python/#dist-folder
Customizing Your Buildshttps://realpython.com/pyinstaller-python/#customizing-your-builds
Testing Your New Executablehttps://realpython.com/pyinstaller-python/#testing-your-new-executable
Debugging PyInstaller Executableshttps://realpython.com/pyinstaller-python/#debugging-pyinstaller-executables
Use the Terminalhttps://realpython.com/pyinstaller-python/#use-the-terminal
Debug Fileshttps://realpython.com/pyinstaller-python/#debug-files
Single Directory Buildshttps://realpython.com/pyinstaller-python/#single-directory-builds
Additional CLI Optionshttps://realpython.com/pyinstaller-python/#additional-cli-options
Additional PyInstaller Docshttps://realpython.com/pyinstaller-python/#additional-pyinstaller-docs
Assisting in Dependency Detectionhttps://realpython.com/pyinstaller-python/#assisting-in-dependency-detection
Limitationshttps://realpython.com/pyinstaller-python/#limitations
Conclusionhttps://realpython.com/pyinstaller-python/#conclusion
https://realpython.com/feedback/survey/article/pyinstaller-python/liked/?from=article-sidebar
https://realpython.com/feedback/survey/article/pyinstaller-python/disliked/?from=article-sidebar
Luke Leehttps://realpython.com/pyinstaller-python/#author
https://realpython.com/pyinstaller-python/#reader-comments
intermediatehttps://realpython.com/tutorials/intermediate/
best-practiceshttps://realpython.com/tutorials/best-practices/
Distribution Problemshttps://realpython.com/pyinstaller-python/#distribution-problems
PyInstallerhttps://realpython.com/pyinstaller-python/#pyinstaller
Preparing Your Projecthttps://realpython.com/pyinstaller-python/#preparing-your-project
Using PyInstallerhttps://realpython.com/pyinstaller-python/#using-pyinstaller
Digging Into PyInstaller Artifactshttps://realpython.com/pyinstaller-python/#digging-into-pyinstaller-artifacts
Spec Filehttps://realpython.com/pyinstaller-python/#spec-file
Build Folderhttps://realpython.com/pyinstaller-python/#build-folder
Dist Folderhttps://realpython.com/pyinstaller-python/#dist-folder
Customizing Your Buildshttps://realpython.com/pyinstaller-python/#customizing-your-builds
Testing Your New Executablehttps://realpython.com/pyinstaller-python/#testing-your-new-executable
Debugging PyInstaller Executableshttps://realpython.com/pyinstaller-python/#debugging-pyinstaller-executables
Use the Terminalhttps://realpython.com/pyinstaller-python/#use-the-terminal
Debug Fileshttps://realpython.com/pyinstaller-python/#debug-files
Single Directory Buildshttps://realpython.com/pyinstaller-python/#single-directory-builds
Additional CLI Optionshttps://realpython.com/pyinstaller-python/#additional-cli-options
Additional PyInstaller Docshttps://realpython.com/pyinstaller-python/#additional-pyinstaller-docs
Assisting in Dependency Detectionhttps://realpython.com/pyinstaller-python/#assisting-in-dependency-detection
Limitationshttps://realpython.com/pyinstaller-python/#limitations
Conclusionhttps://realpython.com/pyinstaller-python/#conclusion
Remove adshttps://realpython.com/account/join/
Gohttps://golang.org
PyInstallerhttps://pyinstaller.readthedocs.io/en/stable/
set up virtual environmentshttps://realpython.com/python-virtual-environments-a-primer/
manage dependencieshttps://realpython.com/courses/managing-python-dependencies/
avoid dependency pitfallshttps://realpython.com/dependency-pitfalls/
publish to PyPIhttps://realpython.com/pypi-publish-python-package/
PyInstallerhttps://pyinstaller.readthedocs.io/en/stable/
5 Thoughts On Python Masteryhttps://realpython.com/bonus/python-mastery-course/
https://realpython.com/pyinstaller-python/#distribution-problems
Raymond Hettingerhttps://mobile.twitter.com/raymondh
excellent talkshttps://pyvideo.org/speaker/raymond-hettinger.html
Remove adshttps://realpython.com/account/join/
https://realpython.com/pyinstaller-python/#pyinstaller
PyInstallerhttps://pyinstaller.readthedocs.io/en/stable/
Python projecthttps://realpython.com/intermediate-python-project-ideas/
introspectinghttps://en.wikipedia.org/wiki/Type_introspection
excellent PyInstaller docshttps://pyinstaller.readthedocs.io/en/stable/operating-mode.html#analysis-finding-the-files-your-program-needs
limitationshttps://realpython.com/pyinstaller-python/#limitations
https://realpython.com/pyinstaller-python/#preparing-your-project
explicit relative importshttps://realpython.com/absolute-vs-relative-python-imports/#relative-imports
Real Python feed reader projecthttps://github.com/realpython/reader
reader projecthttps://github.com/realpython/reader
Publishing a Package on PyPIhttps://realpython.com/pypi-publish-python-package/
hidden importshttps://pyinstaller.readthedocs.io/en/stable/when-things-go-wrong.html?highlight=Hidden#listing-hidden-imports
Remove adshttps://realpython.com/account/join/
https://realpython.com/pyinstaller-python/#using-pyinstaller
PyPIhttps://pypi.org
Python packageshttps://realpython.com/python-modules-packages
create your own hook fileshttps://pyinstaller.readthedocs.io/en/stable/hooks.html
C/C++ extensionshttps://realpython.com/build-python-c-extension-module/
NumPyhttp://www.numpy.org
PyQthttps://pypi.org/project/PyQt5/
Matplotlibhttps://matplotlib.org
PyInstaller documentationhttps://github.com/pyinstaller/pyinstaller/wiki/Supported-Packages
PATHhttps://realpython.com/add-python-to-path/
https://realpython.com/pyinstaller-python/#digging-into-pyinstaller-artifacts
https://realpython.com/pyinstaller-python/#spec-file
specific use-cases for PyInstaller spec fileshttps://pyinstaller.readthedocs.io/en/stable/spec-files.html#using-spec-files
Remove adshttps://realpython.com/account/join/
https://realpython.com/pyinstaller-python/#build-folder
https://realpython.com/pyinstaller-python/#dist-folder
default GitHub gitignore file for Python projectshttps://github.com/github/gitignore/blob/master/Python.gitignore
testing your new executablehttps://realpython.com/pyinstaller-python/#testing-your-new-executable
https://realpython.com/pyinstaller-python/#customizing-your-builds
requestshttps://realpython.com/python-requests/
pytesthttps://realpython.com/pytest-python-testing/
official PyInstaller Spec file documentationhttps://pyinstaller.readthedocs.io/en/stable/spec-files.html
Remove adshttps://realpython.com/account/join/
https://realpython.com/pyinstaller-python/#testing-your-new-executable
https://realpython.com/pyinstaller-python/#debugging-pyinstaller-executables
https://realpython.com/pyinstaller-python/#use-the-terminal
Remove adshttps://realpython.com/account/join/
https://realpython.com/pyinstaller-python/#debug-files
https://realpython.com/pyinstaller-python/#single-directory-builds
https://realpython.com/pyinstaller-python/#additional-cli-options
redirection functionalityhttps://en.wikipedia.org/wiki/Redirection_(computing)
Continuous Integrationhttps://realpython.com/python-continuous-integration/
https://realpython.com/pyinstaller-python/#additional-pyinstaller-docs
PyInstaller GitHub Wikihttps://github.com/pyinstaller/pyinstaller/wiki
making sure everything is packaged correctlyhttps://github.com/pyinstaller/pyinstaller/wiki/How-to-Report-Bugs#make-sure-everything-is-packaged-correctly
if things go wronghttps://github.com/pyinstaller/pyinstaller/wiki/If-Things-Go-Wrong
https://realpython.com/pyinstaller-python/#assisting-in-dependency-detection
hidden importshttps://pyinstaller.readthedocs.io/en/stable/when-things-go-wrong.html?highlight=Hidden#listing-hidden-imports
dynamic import magichttps://realpython.com/python-import/
hook fileshttps://pyinstaller.readthedocs.io/en/stable/hooks.html
PyInstaller source codehttps://github.com/pyinstaller/pyinstaller/tree/develop/PyInstaller/hooks
Remove adshttps://realpython.com/account/join/
https://realpython.com/pyinstaller-python/#limitations
cross compilehttps://en.wikipedia.org/wiki/Cross_compiler
glibchttps://en.wikipedia.org/wiki/GNU_C_Library
CentOShttps://www.centos.org
PEP 0513https://www.python.org/dev/peps/pep-0513/
PyPAhttps://www.pypa.io/en/latest/
PyPA’s manylinux docker imagehttps://github.com/pypa/manylinux
https://realpython.com/pyinstaller-python/#conclusion
https://realpython.com/feedback/survey/article/pyinstaller-python/liked/?from=article-footer
https://realpython.com/feedback/survey/article/pyinstaller-python/disliked/?from=article-footer
https://realpython.com/team/llee/
» More about Lukehttps://realpython.com/team/llee/
https://realpython.com/team/asantos/
Aldrenhttps://realpython.com/team/asantos/
https://realpython.com/team/damos/
Davidhttps://realpython.com/team/damos/
https://realpython.com/team/jjablonski/
Joannahttps://realpython.com/team/jjablonski/
Level Up Your Python Skills »https://realpython.com/account/join/?utm_source=rp_article_footer&utm_content=pyinstaller-python
Level Up Your Python Skills »https://realpython.com/account/join/?utm_source=rp_article_footer&utm_content=pyinstaller-python
https://realpython.com/feedback/survey/article/pyinstaller-python/liked/?from=article-comments
https://realpython.com/feedback/survey/article/pyinstaller-python/disliked/?from=article-comments
LinkedInhttps://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Frealpython.com%2Fpyinstaller-python%2F
Twitterhttps://twitter.com/intent/tweet/?text=Interesting%20Python%20article%20on%20%40realpython%3A%20Using%20PyInstaller%20to%20Easily%20Distribute%20Python%20Applications&url=https%3A%2F%2Frealpython.com%2Fpyinstaller-python%2F
Blueskyhttps://bsky.app/intent/compose?text=Interesting%20Python%20article%20on%20%40realpython.com%3A%20Using%20PyInstaller%20to%20Easily%20Distribute%20Python%20Applications%20https%3A%2F%2Frealpython.com%2Fpyinstaller-python%2F
Facebookhttps://facebook.com/sharer/sharer.php?u=https%3A%2F%2Frealpython.com%2Fpyinstaller-python%2F
Get tips for asking good questionshttps://realpython.com/python-beginner-tips/#tip-9-ask-good-questions
get answers to common questions in our support portalhttps://support.realpython.com
Real Python Community Chathttps://realpython.com/community/
“Office Hours” Live Q&A Sessionhttps://realpython.com/office-hours/
intermediatehttps://realpython.com/tutorials/intermediate/
best-practiceshttps://realpython.com/tutorials/best-practices/
Python Virtual Environments: A Primerhttps://realpython.com/python-virtual-environments-a-primer/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=pyinstaller-python
Managing Python Projects With uv: An All-in-One Solutionhttps://realpython.com/python-uv/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=pyinstaller-python
Python GUI Programming: Your Tkinter Tutorialhttps://realpython.com/python-gui-tkinter/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=pyinstaller-python
Creating Great README Files for Your Python Projectshttps://realpython.com/readme-python-project/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=pyinstaller-python
A Close Look at a FastAPI Example Applicationhttps://realpython.com/fastapi-python-web-apis/?utm_source=realpython&utm_medium=web&utm_campaign=related-post&utm_content=pyinstaller-python
https://realpython.com/account/signup/?intent=continue_reading&utm_source=rp&utm_medium=web&utm_campaign=rwn&utm_content=v1&next=%2Fpyinstaller-python%2F
Continue »https://realpython.com/account/signup/?intent=continue_reading&utm_source=rp&utm_medium=web&utm_campaign=rwn&utm_content=v1&next=%2Fpyinstaller-python%2F
Sign-Inhttps://realpython.com/account/login/?next=/pyinstaller-python/
Start Herehttps://realpython.com/start-here/
Learning Resourceshttps://realpython.com/search
Code Mentorhttps://realpython.com/mentor/
Python Referencehttps://realpython.com/ref/
Python Cheat Sheethttps://realpython.com/cheatsheets/python/
Support Centerhttps://support.realpython.com/
Learning Pathshttps://realpython.com/learning-paths/
Quizzes & Exerciseshttps://realpython.com/quizzes/
Browse Topicshttps://realpython.com/tutorials/all/
Live Courseshttps://realpython.com/live/
Bookshttps://realpython.com/books/
Podcasthttps://realpython.com/podcasts/rpp/
Newsletterhttps://realpython.com/newsletter/
Community Chathttps://realpython.com/community/
Office Hourshttps://realpython.com/office-hours/
Learner Storieshttps://realpython.com/learner-stories/
Plans & Pricinghttps://realpython.com/account/join/
Team Planshttps://realpython.com/account/join-team/
For Businesshttps://realpython.com/account/join-team/inquiry/
For Schoolshttps://realpython.com/account/join-team/education-inquiry/
Reviewshttps://realpython.com/learner-stories/
About Ushttps://realpython.com/about/
Teamhttps://realpython.com/team/
Mission & Valueshttps://realpython.com/mission/
Editorial Guidelineshttps://realpython.com/editorial-guidelines/
Sponsorshipshttps://realpython.com/sponsorships/
Careershttps://realpython.workable.com
Press Kithttps://realpython.com/media-kit/
Merchhttps://realpython.com/merch
https://www.youtube.com/realpython
https://x.com/realpython
https://www.linkedin.com/company/realpython-com
https://www.facebook.com/LearnRealPython
https://github.com/realpython/
Privacy Policyhttps://realpython.com/privacy-policy/
Terms of Usehttps://realpython.com/terms/
Securityhttps://realpython.com/security/
Contacthttps://realpython.com/contact/
https://realpython.com/

Viewport: width=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover

Robots: max-image-preview:large


URLs of crawlers that visited me.