[深度学习基础]3.将项目制作成自己的python库,通过pip可以安装(离线和在线两种方式)

0. 前置准备

打开命令行窗口,安装一个setuptools包和分发工具,该工具被setup.py调用,实现库的构造。

pip install setuptools

1. 情况说明

我已经有了一个训练好的模型和项目,为了方便更多人便捷的使用。决定将它封装成库,其他人通过import方法即可使用(这里用CPU测试使用)。

1.1 单个文件

  • 测试的单个执行文件打包的架构如下:
--自己的项目
----项目下的子项目
----setup.py       (比较重要,后文有赘述,主要是该包的描述)
------__init_.py  (什么都不用写,只是一个代表入口)
------python_exe1.py  (自己的单文件)

setup.py文件如下:

import setuptools
setuptools.setup(
    name="Test_Car_312",  #后期pip uninstall 需要的名字 (尽量这里的所有名字都和文件夹名统一吧,不然难得折腾)
    version="1.0",
    author="CHD.qhl",
    author_email="qinsober@163.com",
    description="test car",
    long_description="this is a package about test car's index like plate, brand,color and so on",
    long_description_content_type="Test_car",   #后期需要import的名字
    packages=setuptools.find_packages(),  #这样安装的搜索包只会添加进入含有__init__.py文件的目录打包进去
    # install_requires=["python"], #安装需求
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
)

python_exe1.py文件如下(放一个可执行的函数即可):

def hello():
    print("hello this is my api")

1.2 整个项目

  • 测试的项目的架构如下:

2. 做一个文件

在完成上述1.1的准备后,按下列步骤执行。为加深理解,可以去官网查看相关的解释和定义。

2.1 打包

  1. 移动到setup.py文件夹路径下,并用cmd形式打开,执行:
python setup.py sdist

执行完毕,命令行结果如下:
在这里插入图片描述

之后对比会发现多了两个文件夹,如下:

--/自己的项目
----/disk  (新生成的,该文件夹下存在可以被pip install 的包用以引用)
--------Test_Car_312-1.0.tar.gz(新生成的,包名-版本号)
----/Test_Car_312.egg-info*(新生成的,一些中间文件,不一一列举了)
----/项目下的子项目
----setup.py       (比较重要,后文有赘述,主要是该包的描述)
--------__init_.py  (什么都不用写,只是一个代表入口)
--------python_exe1.py  (自己的单文件)

2.2 安装打好的包进行测试

上边已经生成了Test_Car_312-1.0.tar.gz文件,直接对其进行pip install即可。

  1. 键入如下命令进行:
python install Test_Car_312-1.0.tar.gz

如果因为version问题无法安装成功,选择信任它的来源即可,键入如下代码:

python install Test_Car_312-1.0.tar.gz --trusted-host

2.3 测试

此时不出意外,执行2.2后已经成功了,控制台输出如下:
在这里插入图片描述可以看到pip install 后,系统中安装好了包。这里import的是构建时文件夹下的包名Test_Car

    1. 为了查看系统的包安装的地方,我们可以使用python
from Test_Car import hello

导入成功!

    1. 执行代码:
hello.hello_312()

控制台成功输出之前写的代码hello this is my api

2.4 查看和卸载

通过查看sys.path的搜索路径并且一个一个的寻找,我终于找到了pip 安装后的路径。
由于我是在conda的虚拟环境下安装的,环境名为yolov5,它的路径如下:
D:\work_software\installed\Anaconda3\installed\envs\yolov5\Lib\site-packages
基本就是
anaconda安装路径/envs/环境名/Lib/site-packages
展开查看如下:
在这里插入图片描述

2.4.1 卸载

  • 卸载这里需要注意,如果把不准就pip list查看一下包名再卸载。这里的包名是上边提到的setup.py中的name后边的参数:
    在这里插入图片描述
    卸载命令:
pip uninstall Test_Car_312

3. 做一个项目

这里以yolo项目为例,将整个yolo项目/与train.py同级这里算一整个目录,所有文件均移动到项目下的子项目这一栏:之后的文件目录如下:

--/整个转移项目结构
----/需要移植的项目
----setup.py       (比较重要,后文有赘述,主要是该包的描述)
------/__init_.py  (什么都不用写,只是一个代表入口)
------yolo....一堆并列文件  (自己的yolo文件夹,很多文件啊)

之后仍然和之前一样即可。

3.1 值得注意

前文setup.py提到的搜索包的方式可以通过:

    1. 自己指定需要搜索的包的文件夹和文件
    1. 只搜索有__init__.py文件夹的打包加入到库中
      这里选择的是第二种方式,所以对需要用得到包,需要加入一个空白的__init__.py文件

4. 上传到官网

此时可以通过官网下载

  1. 在pypi官网注册账号:官网:https://pypi.org/
  2. 执行 pip install twine
  3. 执行twine upload dist/*上传包, 上传包过程中需输入用户名、密码
  4. 执行pip install 包名安装包

5. 总结文件夹架构

总结以上规律可得,假如你有一个需要转移的项目,你只需要这么做:

--/你的项目

改变成如下结构:

--/你的项目(一个文件夹)
----项目空间...下有很多文件
----__init__.py
--setup.py
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值