# Ultramax Package

This is a nester package. You can use
[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)
to write your content.


|-- package/
|   |-- dist/
|   |-- src/
|   |   |-- kingnest/
|   |   |   |-- __init__.py
|   |   |   |-- nest.py
|   |   |   |-- 更多模块.py
|   |-- test/
|   |-- LICENSE
|   |-- pyproject.toml
|   |-- README.md

目录结构
package/：这是项目的根目录。
  dist/：这个目录将包含打包的文件，包括源码分发包（.tar.gz 文件）和轮子分发包（.whl 文件）。这些文件是通过运行 python -m build 生成的。
  src/：这个目录包含你的源代码。这是一种常见的目录结构，可以帮助避免一些 Python 导入问题。
    kingnest/：这是包的主目录，它包含 Python 源代码。这个目录的名称应该与包名称一致。
      __init__.py：这个文件是一个特殊的文件，它标记 kingnest/ 目录为一个 Python 包，这样它就可以作为一个模块导入了。这个文件可以为空，或者包含初始化代码。
      nest.py：这是主要 Python 文件。递归函数在这里。
      module1.py: 类和其他代码应在这里
      module2.py:
      module3.py:
  test/：这个目录包含单元测试。
  LICENSE：这个文件列出项目采用的开源许可证。这是非常重要的，因为它定义了其他人可以如何使用你的代码。
  pyproject.toml：这是项目的配置文件。在这里，定义项目的元数据（如名称、版本、作者等）以及项目的依赖关系。
  README.md：这个文件应该包含项目的介绍和使用说明。这是项目的主要文档，尽可能详细和清晰。



Python 模块打包发布到PyPI：

1.  组织代码
目录结构如上

2.  创建 pyproject.toml
pyproject.toml 是 Python 包的配置文件。在这个文件中指定包的名称、版本、作者、许可证等信息，以及包的依赖关系。
现在 Python 社区推荐使用 pyproject.toml，因为它提供了一种更标准化和灵活的方式来管理包的配置。

3.  创建 README.md 和 LICENSE
在项目根目录下创建一个 README.md 文件，说明包是什么，以及如何使用它，并包含一个 LICENSE 文件，指明包的许可证。

4.  使用 build 命令来打包你的项目。首先，需要安装 build 模块：
    ```
    pip install build
    ```
    然后，在你的项目根目录下运行以下命令来打包你的项目：
    ```
    python -m build
    ```
    这将会在 dist/ 目录下创建一个源代码分发包（.tar.gz 文件）和一个轮子分发包（.whl 文件）。

5.  使用 twine 命令来发布包到 PyPI（Python Package Index）。首先，你需要安装 twine：
    ```
    pip install twine
    ```
    然后，可以运行以下命令来上传你的包：
    ```
    twine upload dist/*
    ```

在这个过程中，要输入 PyPI 用户名和密码。如果还没有 PyPI 账户，可以在 PyPI 网站上创建一个。
启用两用验证后，必须使用API令牌登录
用户名设为 __token__
密码设置为令牌值，包括pypi-前缀

如果使用Twine来将程序上传至PyPI，像这样来设置$HOME/.pypirc文件，每次上传模块就不用输入用户名密码了。
[pypi]
  username = __token__
  password = pypi-*****

在Linux操作系统中，$HOME是一个环境变量，它指向当前用户的主目录。通常，这个目录位于/home目录下。
当您在终端中执行cd命令时，它会将当前工作目录更改为HOME所指示的目录。
