欢迎各位兄弟 发布技术文章
这里的技术是共享的
python 构建一个简单的自定义包的示例 包含 __init__.py __main.py
构建一个简单的自定义Python包,通常需要创建一个目录来作为包的容器,并在该目录下创建必要的文件如 __init__.py
和其他模块文件。如果你想要包含一个 __main__.py
文件,这将允许你的包被直接执行(例如,通过命令行使用 python -m your_package
)。
下面是一个简单示例,演示如何创建一个名为 simplepackage
的包:
创建包的根目录和子目录结构:
深色版本simplepackage/ ├── __init__.py ├── __main__.py └── simplemodule.py
在 __init__.py
文件中,你可以初始化你的包。对于一个简单的包,这个文件可以是空的,或者你可以导出你想要公开的接口:
python深色版本# simplepackage/__init__.py # 如果你想从 simplemodule 导入特定函数或类并将其暴露为包的一部分, # 你可以在这里导入它们。例如: from .simplemodule import my_function, MyClass
__all__ = ["my_function","MyClass"]
创建 simplemodule.py
模块文件,添加一些功能:
python深色版本# simplepackage/simplemodule.py
def my_function():
print("Hello from my_function!")
class MyClass:
def say_hello(self):
print("Hello from MyClass!")
在 __main__.py
中编写代码,使得当包被当作脚本运行时,会执行某些特定逻辑:
python深色版本# simplepackage/__main__.py if __name__ == '__main__': # 当包被直接执行时,这段代码会被运行。 print("Running the package as a script.") from .simplemodule import my_function, MyClass my_function() obj = MyClass() obj.say_hello()
现在你可以将这个包安装到你的环境中(如果它在一个项目中),或者直接在同一个目录层次结构中使用它。为了安装它,你需要创建一个 setup.py
文件。这里是一个简单的 setup.py
示例:
python深色版本# setup.py from setuptools import setup, find_packages setup( name="simplepackage", version="0.1", packages=find_packages(), )
使用以下命令安装你的包(确保你在包含 setup.py
文件的目录中):
bash深色版本pip install .
安装完成后,你可以在 Python 解释器中导入并使用你的包,也可以通过命令行直接运行它:
bash深色版本python -m simplepackage
这将会输出:
深色版本Running the package as a script. Hello from my_function! Hello from MyClass!
请记得根据你的具体需求调整上述示例中的代码。
python 构建一个简单的自定义包的示例 包含 __init__.py __main.py
在 Python 中构建一个包含 __init__.py
和 __main__.py
的自定义包可以让你灵活地组织代码,并且能够通过命令行直接运行包。下面是一个简单的示例,展示如何构建这样一个包。
首先,创建一个项目目录,并在其中创建必要的文件和文件夹。一个包含 __init__.py
和 __main__.py
的包结构可能如下:
复制代码my_custom_package/ ├── my_custom_package/ │ ├── __init__.py │ ├── __main__.py │ └── my_module.py ├── setup.py └── README.md
my_module.py
:这是你的包中的一个模块,包含一些函数或类。
python复制代码# my_custom_package/my_module.py
def greet(name): return f"Hello, {name}!"
__init__.py
:这个文件使得目录成为一个 Python 包,并且可以在其中导入包内的模块或定义包级别的功能。
python复制代码# my_custom_package/__init__.py
from .my_module import greet
__all__ = ["greet"]
__main__.py
:这个文件允许你直接通过命令行运行包。
python复制代码# my_custom_package/__main__.py
if __name__ == "__main__": from .my_module import greet print(greet("World"))
setup.py
setup.py
文件用于定义包的元数据以及安装依赖。以下是一个简单的 setup.py
示例:
python复制代码# setup.py
from setuptools import setup, find_packages
setup( name="my_custom_package", version="0.1", packages=find_packages(), entry_points={ 'console_scripts': [ 'my-custom-package=my_custom_package.__main__:main', # 注意这里需要定义一个main函数,但在我们的例子中直接运行__main__.py ], }, install_requires=[], # 在这里添加依赖项 author="Your Name", author_email="your.email@example.com", description="A simple custom Python package with __init__.py and __main__.py", long_description=open('README.md').read(), long_description_content_type='text/markdown', url="https://github.com/yourusername/my_custom_package", # 项目主页(可选) classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], python_requires='>=3.6', )
注意:在上面的 entry_points
中,我们通常会定义一个 main
函数作为入口点,但在我们的例子中,__main__.py
已经被设置为包的入口,所以这里只是为了展示如何定义入口点,实际上你可能不需要它,或者你需要稍微调整你的 __main__.py
来适应这种结构(比如添加一个 main
函数并在其中调用你的代码)。然而,对于简单的用例,直接运行 python -m my_custom_package
通常就足够了。
在项目的根目录下,运行以下命令来安装你的包(在开发模式下):
bash复制代码pip install -e .
安装完成后,你可以通过以下命令直接运行你的包:
bash复制代码python -m my_custom_package
这将输出:
复制代码Hello, World!
通过这种方式,你创建了一个包含 __init__.py
和 __main__.py
的自定义 Python 包。__init__.py
使得目录成为一个包,而 __main__.py
允许你直接通过命令行运行包中的代码。记得根据你的实际需求调整代码和文件结构。
python 构建一个简单的自定义包的示例
构建一个简单的自定义 Python 包可以帮助你组织和重用代码。以下是一个基本的步骤指南,以及一个示例代码。
首先,创建一个项目目录,并在其中创建必要的文件和文件夹。一个基本的包结构可能如下:
复制代码my_package/ ├── my_package/ │ ├── __init__.py │ └── my_module.py ├── tests/ │ └── test_my_module.py ├── setup.py └── README.md
在 my_package/my_module.py
中编写你的模块代码。例如:
python复制代码# my_package/my_module.py
def greet(name): return f"Hello, {name}!"
在 my_package/__init__.py
中,你可以导入模块或者定义一些包级别的功能。例如:
python复制代码# my_package/__init__.py
from .my_module import greet
__all__ = ["greet"]
在 tests/test_my_module.py
中编写一些测试代码。例如,使用 unittest
模块:
python复制代码# tests/test_my_module.py
import unittest from my_package.my_module import greet
class TestMyModule(unittest.TestCase): def test_greet(self): self.assertEqual(greet("World"), "Hello, World!")
if __name__ == "__main__": unittest.main()
setup.py
setup.py
文件用于定义包的元数据以及安装依赖。以下是一个简单的 setup.py
示例:
python复制代码# setup.py
from setuptools import setup, find_packages
setup( name="my_package", version="0.1", packages=find_packages(), install_requires=[], # 在这里添加依赖项 author="Your Name", author_email="your.email@example.com", description="A simple custom package", long_description=open('README.md').read(), long_description_content_type='text/markdown', url="https://github.com/yourusername/my_package", # 项目主页 classifiers=[ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], python_requires='>=3.6', )
README.md
在 README.md
文件中添加包的描述、使用说明等信息。例如:
markdown复制代码# My Package
A simple custom Python package example.
## Installation
```bash pip install git+https://github.com/yourusername/my_package.git
python复制代码from my_package import greet print(greet("World"))
复制代码### 步骤 6: 安装和测试你的包
在项目的根目录下,运行以下命令来安装你的包(在开发模式下):
```bash pip install -e .
然后,你可以运行测试:
bash复制代码python -m unittest discover tests/
如果你希望将包发布到 PyPI,你需要创建一个 .pypirc
文件来配置你的 PyPI 凭据,然后使用以下命令打包并发布:
bash复制代码python setup.py sdist bdist_wheel twine upload dist/*
以上就是一个简单的自定义 Python 包的构建过程。通过这种方式,你可以更好地组织和重用你的代码,并且可以通过版本控制系统(如 Git)和 PyPI 与他人共享你的工作。