我如何使setup.py在包装中包含一个类

问题描述

我正在使用setup.py打包我的项目。结构如下:

foo -
    |
    |--foo/
    |    |
    |    |--first.py
    |    |--second.py
    |    |--...
    |--README
    |--requirements.txt
    |--scripts/
    |        |
    |        |-script1.sh
    |        |-script2.py
    |--service.py
    |--setup.py

如果我运行当前的setup.py,这符合此处的建议:What is setup.py? 然后在venv/lib/python3.6/site-packages/foovenv/lib/python3.6/site-packages/scripts中可以看到所有的python类。但是缺少service.py。我的问题是如何修改setup.py以将service.py包含到包装中,以便可以在venv/lib/python3.6/site-packages/上找到service.py? 预先感谢!

解决方法

对于要包含在发行版中的顶级模块,例如service.py setuptools 提供了py_modules参数。

setuptools 文档没有清楚显示,但与 distutils (现已弃用)中的相同:

setuptools.setup(
    # ...
    py_modules=['service'],# no '.py'
)