Setuptools如何仅打包一些模块和文件

时间:2019-08-29 18:57:05

标签: python setuptools distutils

我正在包装一个小python包。我是python打包的完全新手,我的目录结构如下(直到第二层嵌套):

.
├── data
│   ├── images
│   ├── patches
│   └── train.csv
├── docker
│   ├── check_gpu.py
│   ├── Dockerfile.gcloud_base
│   ├── Dockerfile.gcloud_myproject
├── env.sh
├── gcloud_config_p100.yml
├── legacy
│   ├── __init__.py
│   ├── notebooks
│   └── mypackage
├── notebooks
│   ├── EDA.ipynb
│   ├── Inspect_patches.ipynb
├── README.md
├── requirements.txt
├── scripts
│   ├── create_patches_folds.py
│   └── create_patches.py
├── setup.py
├── mypackage
    ├── data
    ├── img
    ├── __init__.py
    ├── jupyter
    ├── keras_utils
    ├── models
    ├── train.py
    └── util.py

我的setup.py:

import os
from setuptools import setup, find_packages

REQUIRED_PACKAGES = [
    "h5py==2.9.0",
    "numpy==1.16.4",
    "opencv-python==4.1.0.25",
    "pandas==0.24.2",
    "keras==2.2.4",
    "albumentations==0.3.1"
]

setup(
    name='mypackage',
    version='0.1',
    install_requires=REQUIRED_PACKAGES,
    packages=find_packages(include=["mypackage.*"]),
    include_package_data=False
)

我要打包的代码仅对应于mypackage目录。这就是为什么我将“ mypackage。*”传递给find_packages并使用include_package_data = False的原因。

如果我跑步:

python setup.py sdist

所有项目结构都打包在生成的tar.gz文件中。

有人知道如何仅将模块打包在mypackage /和顶级自述文件中吗?我在setuptools文档中找不到此内容。

1 个答案:

答案 0 :(得分:1)

首先要解决的是

packages=find_packages(include=["mypackage"]),

但是您还需要了解sdist主要由文件MANIFEST or its template MANIFEST.in控制,而不是setup.py控制。您可以比较使用sdistbdist_wheelbdist_egg创建的内容; bdist_*的内容由setup.py控制。

所以我的建议是创建以下MANIFEST.in

prune *
include README.txt
recursive-include mypackage *.py
相关问题