xam*_*mox 28 python install distutils setup.py
基本上我的python包设置如下:
module
\_examples
\_folder1
\_file1.py
\_file2.py
\_folder2
\_file1.py
\_file2.py
Run Code Online (Sandbox Code Playgroud)
基本上我只想使用:
package_data = {
'module': ['examples/*'],
},
Run Code Online (Sandbox Code Playgroud)
因为我的项目总是让人们添加示例,我希望从我的应用程序中轻松列出它们.我可以在示例中为任何FILE工作,但不能通过子目录重新编译.这可能吗?
def*_*mat 40
我相信你正在寻找的东西是这样的setup.py,它将递归地找到项目中的任何包,同时确保并将__init__.py文件包含到你想要的每个包的子目录中.
from setuptools import setup, find_packages
setup(name='MySoftware',
packages=find_packages()
)
Run Code Online (Sandbox Code Playgroud)
我遇到了这篇文章,并花了一些时间弄清楚如何将特定的子模块添加到我的包中,所以我将在这里发布我的解决方案。
在我的包根文件夹中,我有一个setup.py文件,参见 doc
在这个文件中,我有以下代码:
from setuptools import setup
with open("README.md", "r") as fh:
long_description = fh.read()
setup(
name='package name',
version='0.4.1',
description='short description',
long_description=long_description,
long_description_content_type="text/markdown",
url='repository url',
author='My name',
author_email='my@e.mail',
license='MIT',
packages=['PackageName','PackageName.SubModule'],
zip_safe=False,
install_requires=[
'dependecy1',
],
classifiers=[
'Development Status :: 3 - Alpha',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3.7'
]
)
Run Code Online (Sandbox Code Playgroud)
回答这个问题的有趣部分,这里是:
packages=['PackageName','PackageName.SubModule'],
通过遵循此语法,您可以将子模块包含到主包分发中。
有关所有其他参数的更多信息可以在文档中找到。
您必须为此使用一个MANIFEST.in文件。
我相信你会想要这样的东西:
$ cat MANIFEST.in 递归包含示例/ *.py
| 归档时间: |
|
| 查看次数: |
17323 次 |
| 最近记录: |