我正在尝试学习如何使用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
而不是{{1} }。在setuptools_scm
中,我尝试设置setuptools.setup
和packages, package_dir, py_modules
,但是这些都不起作用。是否有办法(除了通过强制卸载依赖软件包use_scm_version=False
破坏系统之外)告诉setuptools_scm
忽略我的git存储库,而不是自身? (我在setup.py
中尝试过exclude *
,但随后甚至排除了Manifest.in
。)
答案 0 :(得分:1)
我发现了一种解决方法,可以在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='AF@mail.org',
url='https://hitgub.org/AF/package',
packages=['package'],
version='0.0.1',
license='GPL',
keywords=['package']
)