python setup.py 如何把非py文件也打包?
假设我的项目目录大致如下
myapp/
├── myapp
│ ├── configs
│ │ ├── data
│ │ │ └── data.yaml
│ │ └── trainer
│ │ └── trainer.yaml
│ ├── __init__.py
│ ├── run.py
│ └── trainer
│ ├── __init__.py
│ └── train.py
└── setup.py
注意要想制作成包的目录下必须要添加__init__.py
文件,这里可以看到父目录名是myapp
,它包含了一个同名的子目录,当然你也可以把这个子目录改成src
,但是我习惯取相同的名字。
setup.py
如下
from setuptools import setup, find_packages
setup(
name="myapp", # you should change "src" to your project name
version="1.0",
description="This is my app.",
author="marsggbo",
# replace with your own github project link
#install_requires=["torch>=1.4"],
packages=find_packages(),
include_package_data=True,
)
我们运行如下命令
python setup.py sdist bdist_wheel
你会看到在你的目录下新生成了build
和dist
两个新文件夹,被打包的源代码就在build/lib
里
myapp/
├── build
│ ├── bdist.linux-x86_64
│ └── lib
│ └── myapp
│ ├── __init__.py
│ ├── run.py
│ └── trainer
│ ├── __init__.py
│ └── train.py
├── dist
│ ├── myapp-1.0-py3-none-any.whl
│ └── myapp-1.0.tar.gz
├── myapp
│ ├── configs
│ │ ├── data
│ │ │ └── data.yaml
│ │ └── trainer
│ │ └── trainer.yaml
│ ├── __init__.py
│ ├── run.py
│ └── trainer
│ ├── __init__.py
│ └── train.py
├── myapp.egg-info
│ ├── dependency_links.txt
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ └── top_level.txt
└── setup.py
可以看到只有py文件被打包了,而yaml文件都被丢掉了,为了解决这个问题,你需要创建一个MANIFEST.in
文件,然后输入一下代码
recursive-include myapp/configs *.yaml
这一行代码的作用是去递归地提取出 myapp/configs
路径下的所有yaml文件,当然如果不需要递归的话,你可以把recursive-include
改成include
。
现在我们重新执行打包命令
python setup.py sdist bdist_wheel
这个时候所有yaml文件也成功打包好了
myapp/
├── build
│ ├── bdist.linux-x86_64
│ └── lib
│ └── myapp
│ ├── configs
│ │ ├── data
│ │ │ └── data.yaml
│ │ └── trainer
│ │ └── trainer.yaml
│ ├── __init__.py
│ ├── run.py
│ └── trainer
│ ├── __init__.py
│ └── train.py
├── dist
│ ├── myapp-1.0-py3-none-any.whl
│ └── myapp-1.0.tar.gz
├── MANIFEST.in
├── myapp
│ ├── configs
│ │ ├── data
│ │ │ └── data.yaml
│ │ └── trainer
│ │ └── trainer.yaml
│ ├── __init__.py
│ ├── run.py
│ └── trainer
│ ├── __init__.py
│ └── train.py
├── myapp.egg-info
│ ├── dependency_links.txt
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ └── top_level.txt
└── setup.py
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2018-04-18 远程连接服务器jupyter notebook、浏览器以及深度学习可视化方法