Python 使用Setup进行打包或包分发

Setup简单使用

背景

通常来说在编写好一个python的包之后,便可以通过importfrom的形式将包中的文件导入到另外的python文件中,实现对包中文件方法或类的使用。这种方式在自己使用时比较方便,也没有任何问题。但是如果想要将包分享给其他人使用时,最直接的方式就是将包压缩成压缩包分享给其它人。这种方式非常不方便,因为如果用压缩包的形式,那么就要手动地将包放置在某个位置,如果不同的项目需要同一个包,那么就需要拷贝多次,或者手写相对路径调用。而通常来说使用pip install的包则直接调用即可,不需要考虑相对路径的位置等。因此,能否将自己编写的包通过pip install的方式安装呢。

当然可以,目前比较简单的方法就是使用setuptools库提供的方法编写setup.py文件来实现。

简单例子

文件目录如下所示:

E: package2
│  setup.py
│
└─good2
        util_tools.py
        __init__.py

在目录package2下有一个文件名为setup.py,这也是实现pip install安装包的关键的文件,内容为:

from setuptools import setup, find_packages

setup(name="good3", version="1.0", packages=find_packages())

然后还有一个包为good2,其中有一个内容为空的__init__.py文件,目的是为了让解释器知道good2是一个python包而不是一个普通目录,然后还有一个名为util_tools.py的文件,内容如下所示:

def good():
    print("good")

接着进入package2,即在与setup.py在同一目录下执行pip install -e .

> pip install -e .
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Obtaining file:///E:/WorkSpace/package2
  Preparing metadata (setup.py) ... done
Installing collected packages: good3
  Running setup.py develop for good3
Successfully installed good3-1.0

> pip list
good3                     1.0         e:\workspace\package2

可以看到,通过pip install已经将包进行了安装,并且包的位置不变,当使用impor引入该包时,解释器会自动从该路径下寻找到该包,而不需要手动设置路径。

**注意:**在setup.py中给包命名为good3,因此在pip list中显示的是good3。但在package2目录下,python包的名字为good2,由于python解释器在导入包时遵循的是实际的文件结构和包结构。因此在实际导入时应该是import good2而不是import good3

import good3
----> 1 import good3

ModuleNotFoundError: No module named 'good3'


import good2
print(good2)
<module 'good2' from 'e:\\workspace\\package2\\good2\\__init__.py'>

如果同时包含两个包的话,那么最好将两个包放到一个包中,这样管理起来比较方便。如下图所示package2中有两个包:

(autoui) E:\WorkSpace\package2>tree /F

E: package2
│  setup.py
│
├─good2
│  │  util_tools.py
│  │─-  __init__.py
│
│
└─good4
    │  tt.py
    └─  __init__.py

如果使用pip install .安装之后,需要分别使用import good2import good4才能分别引入这两个包。如果将这两个包放在一个包中,例如p1中,则可以通过import p1.goo2import p1.good4引入这两个包。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 setuptools 来打包你的 Python 项目。以下是一个简单的示例,演示如何使用 setuptools 来打包一个 Python 应用程序: 1. 确保你的项目文件夹结构如下所示: ``` your_project/ your_module/ __init__.py module_file.py setup.py README.md ``` 2. 在你的项目文件夹中创建一个名为 `setup.py` 的文件,并添加以下内容: ```python from setuptools import setup, find_packages setup( name='your_project', version='1.0', packages=find_packages(), entry_points={ 'console_scripts': [ 'your_script_name = your_module.module_file:main', ], }, install_requires=[ 'dependency1', 'dependency2', ], author='Your Name', author_email='your_email@example.com', description='A description of your project', ) ``` 3. 在 `setup.py` 文件中,你需要做以下调整: - 将 `your_project` 替换为你的项目名称。 - 将 `your_module` 替换为你的模块名称。 - 将 `module_file` 替换为你的模块文件名。 - 将 `your_script_name` 替换为你的脚本名称。 4. 在终端中,导航到你的项目文件夹并执行以下命令来构建打包: ``` python setup.py sdist bdist_wheel ``` 这将生成一个名为 `dist` 的文件夹,并在其中包含打包好的文件。 5. 如果一切顺利,你的打包文件现在已经准备好发布了。你可以将 `dist` 文件夹中的文件上传到 PyPI 或其他 Python 包管理器,或者将其直接分发给其他人使用。 这只是一个基本的示例,你可以根据你的项目需求进行更多的配置和定制。有关更多详细信息,请参阅 setuptools 的官方文档:https://setuptools.pypa.io/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值