前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python setup.py 如何把非py文件也打包?

python setup.py 如何把非py文件也打包?

作者头像
marsggbo
发布2022-05-11 16:54:22
1.6K0
发布2022-05-11 16:54:22
举报

假设我的项目目录大致如下

代码语言:javascript
复制
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如下

代码语言:javascript
复制
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,
)

我们运行如下命令

代码语言:javascript
复制
python setup.py sdist bdist_wheel

你会看到在你的目录下新生成了builddist两个新文件夹,被打包的源代码就在build/lib

代码语言:javascript
复制
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文件,然后输入一下代码

代码语言:javascript
复制
recursive-include myapp/configs *.yaml

这一行代码的作用是去递归地提取出 myapp/configs路径下的所有yaml文件,当然如果不需要递归的话,你可以把recursive-include改成include

现在我们重新执行打包命令

代码语言:javascript
复制
python setup.py sdist bdist_wheel

这个时候所有yaml文件也成功打包好了

代码语言:javascript
复制
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
  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档