我正在尝试学习如何使用setuptools创建Python源代码分发包。我以为我知道包是一个包含文件__init__.py
的目录,该包中的模块只是该目录中的Python源文件。因此,简化后,我的开发目录看起来像
.
├── newFile.py
├── OldCode
│ ├── testPackage2.py
│ └── testPackage.py
├── package
│ ├── __init__.py
│ ├── module1.py
│ └── module2.py
├── README.md
├── setup.py
├── test.f90
├── testPackage.py
└── .git/
其中package
包含我的包的模块。我的问题似乎出现了,因为我想发送package/module1.py
和package/module1.py
,但我也有一个git repo,包含那些文件以及上面树中的其他.py文件(我用它来开发和测试包),以及甚至是Fortran源文件。另外,我的(Gentoo)系统除setuptools_scm
外还安装了setuptools
软件包。
我花了几个小时才发现运行./setup.py sdist
只会忽略我输入setup.py
的任何配置(没有警告),即使我是import setuptools
,而不是setuptools_scm
。在setuptools.setup
我尝试设置packages, package_dir, py_modules
和use_scm_version=False
,但这些都没有奏效。有没有办法(除了通过强制卸载依赖包setuptools_scm
来破坏我的系统)告诉setup.py
忽略我的git存储库而不是它自己? (我在exclude *
尝试过Manifest.in
,但是甚至setup.py
被排除在外。)
我找到了一个解决方法来禁用setuptools_scm
中的setup.py
:
from setuptools_scm import integration
integration.find_files = lambda p: []
整个setup.py
现在看起来像:
#!/bin/env python3
from setuptools import setup
from setuptools_scm import integration
integration.find_files = lambda p: []
setup(
name='Package',
description='A Python package',
author='AF',
author_email='[email protected]',
url='https://hitgub.org/AF/package',
packages=['package'],
version='0.0.1',
license='GPL',
keywords=['package']
)