如何将python代码打包成pip包(可以pip install)

  • Post category:Python

以下是将Python代码打包成pip包的详细步骤:

1. 创建项目目录并初始化

首先,创建一个项目目录,例如:mypackage。在终端或命令行中进入该目录,执行以下命令:

mkdir mypackage
cd mypackage

接下来,初始化项目:

pip init

执行后,会在当前目录生成一个名为pyproject.toml的文件。在这个文件中,你需要填写项目的基本信息,例如:项目名称、作者、版本号、许可证等。

提示:如果不想手动逐项填写,可以直接在命令下添加 -n 选项,直接生成默认信息。例如:

pip init -n

2. 编写代码并测试

在项目目录中,添加你想要打包的Python代码文件,例如hello.py:

def say_hello():
    print('Hello World!')

编写完成后,可以先测试一下代码是否正常运行,例如:

from mypackage.hello import say_hello
say_hello()

如果一切正常,那么就可以继续打包的步骤了。

3. 编写setup.py文件

接下来,需要编写一个名为setup.py的文件,该文件用于描述打包的规则和操作。

以下是一个示例的setup.py文件:

from setuptools import setup

setup(
    name='mypackage',
    version='0.1',
    description='A simple package for testing',
    url='https://github.com/USERNAME/mypackage',
    author='YOUR NAME',
    author_email='YOUR EMAIL',
    license='MIT',
    packages=['mypackage'],
    entry_points={
        'console_scripts': [
            'hello_world = mypackage.hello:say_hello'
        ]
    }
)

可以根据需要进行修改。其中重要的几个参数说明如下:

  • name:这个是你的包名,也就是你将来在pip install命令中使用的名字;
  • packages:打包的目录,可以把整个项目都打包进去,或者只打包某个子目录;
  • entry_points:包含可执行文件的描述,如果你想在终端下使用pip安装后直接运行程序,则需要在这里定义可执行文件的名称和相应的方法;

4. 打包

接下来,进入项目目录,执行以下命令:

python setup.py sdist bdist_wheel

上述命令会生成两个文件夹dist和build。其中,dist文件夹中的文件就是你所需的pip包文件。通常情况下,我们只需要使用其中的.whl文件即可。

5. 发布

最后,使用twine发布你的pip包。如果你还没有安装twine,则可以使用pip install twine命令安装。然后执行以下命令:

twine upload dist/*

该命令会将你的pip包上传到pypi.org上,等待别人通过pip install命令安装。上传完成后,任何人都可以在pypi.org上搜索到你的包,并且使用pip安装。

示例说明:

假设你的代码文件为myproject.py,代码内容如下:

def say_hello():
    print('Hello from my project!')

现在,你需要将它打包成pip包。

  1. 在命令行中进入你的项目目录,执行pip init命令:
cd path/to/your/project
pip init
  1. 填写相关信息并保存后,继续编写你的代码文件:
def say_hello():
    print('Hello from my project!')

if __name__ == '__main__':
    say_hello()

这里添加了一个if name == ‘main‘:语句,方便在命令行下测试。

  1. 编写setup.py文件:
from setuptools import setup

setup(
    name='myproject',
    version='0.1',
    description='A simple package for testing',
    url='https://github.com/USERNAME/myproject',
    author='YOUR NAME',
    author_email='YOUR EMAIL',
    license='MIT',
    py_modules=['myproject'],
    entry_points={
        'console_scripts': [
            'hello = myproject:say_hello'
        ]
    }
)

注意,这里用的是py_modules而不是packages,因为我们只有一个文件需要打包,没有子目录。

  1. 验证打包是否成功,执行以下命令:
python setup.py sdist bdist_wheel

如果没有报错,则说明打包成功。dist目录下应该出现了一个名为myproject-0.1-py3-none-any.whl的文件。

  1. 使用twine发布你的pip包:
twine upload dist/*

上传成功后,即可在pypi.org网站上搜索到你的包,并使用pip install命令安装。

  1. 测试是否成功,执行以下命令:
pip install myproject
hello

如果看到了”Hello from my project!”这个输出,则说明打包成功。