杰瑞科技汇

dist文件夹是什么?Python项目打包后的存放位置?

Of course! The dist folder is a standard and crucial part of the Python packaging and distribution process. Let's break down what it is, why it's used, and how to work with it.

dist文件夹是什么?Python项目打包后的存放位置?-图1
(图片来源网络,侵删)

What is the dist folder?

The dist folder (short for distribution) is automatically generated when you "build" your Python project into a distributable format. It contains the packaged files that are ready to be uploaded to a package repository like the Python Package Index (PyPI) or installed locally.

Think of it as the "release" or "shippable" version of your project. It takes your source code and all its necessary dependencies and bundles them up so that another user or machine can easily install and use your project without needing your entire development environment.


What's Inside the dist Folder?

When you build your project, the dist folder typically contains two types of files:

  1. A Wheel file (.whl): This is the modern standard for Python packaging. It's a ZIP archive with a specific naming convention that includes metadata like your project's name, version, and Python compatibility. Wheels are faster to install because they are pre-compiled, bypassing the need to compile C extensions during installation.

    dist文件夹是什么?Python项目打包后的存放位置?-图2
    (图片来源网络,侵删)
  2. A Source Distribution file (.tar.gz): This is a gzipped tarball of your source code. It includes all your project files, setup scripts, and metadata. It serves as a fallback for systems that cannot install a wheel, or for developers who want to see the source code.

Example dist folder contents:

my_project/
├── my_project/
│   ├── __init__.py
│   └── core.py
├── pyproject.toml  <-- Modern standard for project metadata
├── README.md
└── ... other files

After you run the build command (see below), a dist folder appears:

my_project/
├── dist/
│   ├── my_project-0.1.0-py3-none-any.whl
│   └── my_project-0.1.0.tar.gz
├── my_project/
├── pyproject.toml
└── ...

How is the dist Folder Created?

You don't create the dist folder manually. It is generated by a build tool. The most common and recommended tool today is build.

dist文件夹是什么?Python项目打包后的存放位置?-图3
(图片来源网络,侵删)

Step 1: Install the Build Tool

If you don't have it, install it using pip:

pip install build

Step 2: Configure Your Project

Your project needs a configuration file to tell the build tool how to package it. The modern standard is pyproject.toml.

Here is a basic example of a pyproject.toml file:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "my-awesome-project"
version = "0.1.0"
authors = [
  { name="Your Name", email="you@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.8"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

Step 3: Run the Build Command

Navigate to your project's root directory (the one containing pyproject.toml) in your terminal and run:

python -m build

This command will read your pyproject.toml, process your project, and create the dist folder with the .whl and .tar.gz files inside.


What to Do with the dist Folder?

Once the dist folder is created, you have a few primary options:

Upload to PyPI (to share with the world)

This is the most common use case. You can use the twine tool to upload the files from your dist folder to the Python Package Index.

First, install twine:

pip install twine

Then, upload the files:

# It's good practice to check your files first
twine check dist/*
# Upload to the official PyPI repository
twine upload dist/*

After this, anyone can install your package using pip install my-awesome-project.

Install Locally (for testing)

Before uploading, you'll want to test your package. You can install it directly from your dist folder to see if everything works as expected.

# Install the wheel file from the dist folder
pip install dist/my-awesome-project-0.1.0-py3-none-any.whl

This installs the package as if it came from PyPI, which is a great way to catch packaging errors.

Delete the dist Folder

The dist folder is an artifact of the build process. It is not part of your source code and should not be committed to version control (like Git).

You should add it to your .gitignore file:

# .gitignore
# Python build artifacts
dist/
build/
*.egg-info/

You can also use a command like rm -rf dist/ to clean it up after you're done with it.


Summary: dist Folder Workflow

Step Command Purpose
Configure Edit pyproject.toml Define your project's metadata and dependencies.
Build python -m build Create the distributable .whl and .tar.gz files in the dist folder.
Test pip install dist/*.whl Install your package locally to verify it works.
Upload twine upload dist/* Publish your package to PyPI for others to use.
Clean Up rm -rf dist/ Remove the build artifacts.

In short, the dist folder is the bridge between your development environment and the end-user's machine, containing the neatly packaged, ready-to-install version of your Python project.

分享:
扫描分享到社交APP
上一篇
下一篇