删除 python 构建源存档中的父目录

Posted

技术标签:

【中文标题】删除 python 构建源存档中的父目录【英文标题】:Remove parent directories in python build source archive 【发布时间】:2021-11-08 00:28:25 【问题描述】:

我的 python 包有以下设置:

????my_package
 ┣ ????src
 ┃ ┗ ????__init__.py
 ┣ ????setup.cfg
 ┗ ????pyproject.toml

__init__.py 为空,pyproject.tomlsetup.cfg 包含来自PyPi documentation page 的示例输出(内容如下所示)。

现在,为了上传到 PyPi 和打包 python 项目,我运行命令

python -m build

这给了我一个新目录dist(在my_package),其中包含Test-0.0.0.tar.gz。这一切都在意料之中。但是当我打开Test-0.0.0.tar.gz时,我得到以下内容:

????Test-0.0.0.tar.gz
 ┗ ????C:
   ┗ ????path
     ┗ ????to
       ┗ ????my
         ┗ ????dev-directory
           ┗ ????my_package
             ┗ ????dist
               ┗ ????tmp<some other characters>
                 ┗ ????Test-0.0.0.tar

如您所见,.tar.gz 文件包含我本地计算机上的路径,显然这对隐私不太友好。我绝对不想上传包含有关我的私有文件树结构信息的文件。我想,这也不是故意的。另外,据我所知,gzip 不允许直接压缩目录。

所以我的问题是:我在构建过程中做错了什么?

PS:正如您可能已经从文档树中猜到的那样,我正在 Windows 上进行开发——这可能很重要。我的 Python 版本是 3.7.1,通过 Miniconda3 安装。


文件内容:

pyproject.toml

[build-system]
requires = [
    "setuptools>=42",
    "wheel"
]
build-backend = "setuptools.build_meta"

setup.cfg

[metadata]
name=Test

[options]
package_dir =
    = src

__init__.py 为空。

【问题讨论】:

【参考方案1】:

我将我的 python 更新到 3.9 版,现在一切正常。我试图在官方 GitHub 存储库上查找问题,但没有找到。不过,这是一种非常奇怪的行为。

【讨论】:

以上是关于删除 python 构建源存档中的父目录的主要内容,如果未能解决你的问题,请参考以下文章

conda 从本地存档文件构建源

列出和删除存档中的目录

如何在 Python 中将文件写入 Zip 文件的根目录

存档/压缩文件 python

仅为 Xcode 4 中的“存档”构建运行脚本

命令行中的 Xcode“构建和存档”