下面是关于“Python安装模块如何通过setup.py安装”的完整攻略。
1. 准备工作
在使用setup.py
安装Python模块之前,需要确保以下几个条件已经满足:
- 已经安装了Python环境
- 已经使用pip安装了setuptools模块和wheel模块
如果你的环境满足了以上两个条件,那么就可以继续往下看了。
2. 编写setup.py脚本
在安装Python模块的过程中,需要使用到setup.py
脚本。这个脚本提供了一些关于模块的信息,如名称、版本、作者、依赖关系等,用于发布和安装Python模块。下面是一个简单的示例:
from setuptools import setup, find_packages
setup(
name='example', # 模块名称
version='0.1', # 版本号
description='这是一个示例模块', # 模块描述
author='example author', # 作者
packages=find_packages(), # 包含的包
install_requires=[], # 依赖关系
)
其中,name
、version
和description
是模块的基本信息,author
是作者的名称,packages
指定了模块包括的哪些子包,install_requires
是模块需要哪些依赖包。
3. 打包模块
在编写好setup.py
脚本之后,可以使用以下命令将模块打包:
python setup.py sdist bdist_wheel
这个命令会生成两个不同格式的安装包:sdist
是源代码分发包,bdist_wheel
是二进制分发包。这两个包的区别在于前者是源代码,需要在安装时进行编译,后者则是编译好的包,可以直接安装。
4. 安装模块
在打包完模块之后,将生成的安装包上传至pypi服务器,然后在需要安装这个模块的机器上执行以下命令:
pip install example
其中example
是模块的名称,这个名称需要和setup.py
脚本中的name
字段匹配。
如果一切顺利,该模块将被自动安装到Python环境的site-packages
目录下。
示例1
比如我们写一个模块,模块的文件结构如下:
example/
__init__.py
utils/
__init__.py
strings.py
模块中的代码内容如下:
# ./example/utils/strings.py
def reverse_string(s):
return s[::-1]
# ./example/__init__.py
from .utils.strings import reverse_string
那么 setup.py
可以这样写:
from setuptools import setup, find_packages
setup(
name='example', # 模块名称
version='0.1', # 版本号
description='这是一个字符串处理示例模块', # 模块描述
author='example author', # 作者
packages=find_packages(), # 包含的包
install_requires=[], # 依赖关系
)
接着运行,打包模块:
python setup.py sdist bdist_wheel
安装,
pip install example
使用:
from example import reverse_string
print(reverse_string("Hello, World!")) # 输出:!dlroW ,olleH
示例2
假设我们开发了一个模块,用于操作CSV文件,在以上安装流程的基础上, 我们在setup.py
脚本中添加了以下依赖关系:
from setuptools import setup, find_packages
setup(
name='csvutils',
version='0.1',
packages=find_packages(),
install_requires=[
'pandas==1.3.3', # 依赖的pandas包,版本为1.3.3
'numpy>=1.21.2' # 依赖的numpy包,版本大于等于1.21.2
]
)
使用上面提到的打包和安装命令后,我们使用以下代码使用刚刚安装的模块:
import pandas as pd
import numpy as np
from csvutils import CSVUtils
data = pd.read_csv('data.csv')
# 实例化CSVUtils对象
csv = CSVUtils()
# 调用CSVUtils的方法,返回一个字典对象
result = csv.transform(data)
print(result)
在这个例子中,我们依赖了pandas
和numpy
两个包,并在CSVUtils
类中使用了它们。在使用这个模块之前,需要先安装这两个依赖包。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python安装模块如何通过setup.py安装(超简单) - Python技术站