python-3.x - 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
?
解决方案
据我所知。没有办法直接使用setuptools
. 在我的情况下,我最终编写了一个 python 脚本来解压缩(解压缩)由 生成的包setuptools
,然后将所有内容移动到根目录,然后创建一个新的 tarball,最后替换原来的 tarball。
我知道这听起来很复杂,但是项目需要使用的特定构建系统需要这个。.s2i
对于那些将 OpenShift和setuptools
包作为发行版组合的项目,这种情况可能更具体。
推荐阅读
- javascript - new Date().getTimezoneOffset() 返回错误的时区
- javascript - 如何将通过 ajax 发送的 POST 请求的 JSON 数据访问到 php 文件并将它们存储在数组变量中?
- r - 安装没有二进制版本的包依赖
- json - 如何将 JSON 对象数组结果传递给我的 api URL?(反应)
- google-chrome - 网站在浏览器上显示安全,但在移动设备上不安全(没有 SSL 证书)
- c# - Swagger 5.0 - IDocumentFilter(SwaggerDocument 到 OpenApiDocument)自定义“定义”
- laravel - Laravel IOC 不调用构造函数
- c++ - Debug模式和Release模式下的线程通信
- azure - 通过 ARM 模板为 EndpointType 为 AzureFunction 的主题订阅事件
- java - 对构造函数方法进行单元测试