基于Jfs 的 Answer,如果您像我一样已经建立了一个您不想/由于其他原因无法更改的目录结构,一种解决方案是临时复制所有要打包的代码,然后构建它。
这是一个带有目标的生成文件,它将 src 中的所有文件复制到一个临时位置,然后调用 setup.py 来构建包,最后自行清理。
SRC_DIR='src'
TEMP_PACKAGE_DIR='your_shiny_package'
package: prepare_package_dir build_package deploy_package remove_package_dir
# I'm using gemfury, your deployment will probably look different
deploy_package:
twine upload --repository fury dist/* --verbose
clean_package:
rm -r dist || echo 'dist removed'
rm -r ${TEMP_PACKAGE_DIR}.egg-info || echo 'egg-info removed'
build_package: clean_package
python setup.py sdist
prepare_package_dir:
mkdir ${TEMP_PACKAGE_DIR}
cp -R ${SRC_DIR}/* ${TEMP_PACKAGE_DIR}/
mv ${TEMP_PACKAGE_DIR} ${SRC_DIR}/${TEMP_PACKAGE_DIR}
remove_package_dir:
rm -rf ${SRC_DIR}/${TEMP_PACKAGE_DIR}
然后一个 setup.py 看起来有点像这样:
setup(
name='your_shiny_package',
version=version,
description='some great package...',
long_description=readme,
url='https://whereever',
author='you',
packages=['src/your_shiny_package'],
install_requires=parse_all_requirements(),
zip_safe=False,
include_package_data=True)
可能不是最有效的,但可以避免您永久重组整个回购。
用法:只需make package
作为构建管道的一部分或手动调用。