首页 > 解决方案 > setuptools sdist 包目录文件夹名称

问题描述

sdist当我使用 . 创建我的 python 项目“my-project”(下)的源代码分发( )时setuptools,如下面的创建.tar.gz项目,setuptools 创建一个封装目录,其中包含.tar.gz. 无论如何要删除它吗?

我的项目:

my-project
├── LICENSE
├── README.md
├── example_pkg
│   └── __init__.py
│   └── my_program.py
├── setup.py
└── tests

安装程序.py

with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setuptools.setup(
    name="my-project", # Replace with your own username
    version="0.0.1",
    author="DogEatDog",
    author_email="author@example.com",
    description="A small example package",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/pypa/sampleproject",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    python_requires='>=3.6',
)

运行python3 setup.py sdist应该创建:

dist/my-project-0.0.1.tar.gz

提取此 tarballtar -xvf dist/my-project-0.0.1.tar.gz将提取到:

my-project-0.0.1

里面有所有的源码my-project-0.0.1/<my source>

无论如何要更改setuptools以创建将提取到当前目录而不是命名目录的压缩包?这样运行tar -xvf my-project-0.0.1.tar.gz会解压到当前目录吗?

或者

有没有办法setuptools指定封装目录的名称?这样tar -xvf my-project-0.0.1.tar.gz会提取到my-chosen-dir-name而不是my-project-0.0.1?

或者

有没有办法setuptools从封装目录中删除版本号?这样tar -xvf my-project-0.0.1.tar.gz会提取到my-project而不是my-project-0.0.1?

标签: python-3.x

解决方案


据我所知。没有办法直接使用setuptools. 在我的情况下,我最终编写了一个 python 脚本来解压缩(解压缩)由 生成的包setuptools,然后将所有内容移动到根目录,然后创建一个新的 tarball,最后替换原来的 tarball。

我知道这听起来很复杂,但是项目需要使用的特定构建系统需要这个。.s2i对于那些将 OpenShift和setuptools包作为发行版组合的项目,这种情况可能更具体。


推荐阅读