繁体   English   中英

python setup.py sdist bdist_wheel 的输出目录

[英]Output directories for python setup.py sdist bdist_wheel

做的时候

python setup.py sdist bdist_wheel

它创建builddistpackagename.egg-info目录。 我想将它们从当前文件夹中删除。

我试过:

  • --dist-dir=../dist :适用于sdistpackagename.egg-info仍然存在

  • --bdist-dir=../dist :例如:

     python setup.py sdist bdist_wheel --dist-dir=../dist --bdist-dir=../dist2

    工作,最终的 bdist 包在../dist 但是当前文件夹仍然获得我不想要的新目录builddistpackagename.egg-info

问题:如何将所有内容(sdist 和 bdist_wheel 的输出)放在当前文件夹之外?

当然,我可以使用mvrm -r等编写脚本,但我想知道是否存在内置解决方案。

我再次尝试使用-d--dist-dir--bdist-dir但我发现无法在一行中完成。

恐怕我们能找到的最短时间(在 Windows 上)是:

python setup.py sdist bdist_wheel
rmdir /s /q packagename.egg-info build ..\dist
move dist ..

你为什么不试试这个命令:

python setup.py egg_info --egg-base /tmp sdist bdist_wheel

这会将 .egg_info 文件夹放在 tmp 文件夹中。 至少,它将在您的源文件夹之外。

setup.py采用一系列命令( setup.py --help显示用法: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] )。 至关重要的是,每个命令都是自己的脚本,具有自己的命令行选项(这就是setup.py bdist_wheel --help显示与setup.py sdist --help不同的选项的原因)。

这里的微妙之处在于某些命令会在后台生成对其他命令的调用,但不足以将公共标志传递给生成的命令。 例如, bdist_wheel最终调用build ,也egg_info但它不会沿着任何通过bdist-dir你可以指定。 没有全局“为整个 setup.py 命令使用这样那样的工作目录”,因为所有命令都是独立运行的,并且彼此不知道。

为了将所有临时目录重定向到其他地方,您必须手动指定每个命令并使用其临时目录标志。 在我的bdist_wheel案例中,完整的调用是:

  python setup.py ^
    build --build-base \path\to\working\dir ^
    egg_info --egg-base \path\to\working\dir ^
    bdist_wheel --dist-dir \path\to\final\output\dir

(旁注,我发现如果build-baseegg-base不匹配,我会收到一个关于没有使用相对路径的奇怪错误。)

这足以将所有临时目录放在源文件夹之外。

不幸的是,哪个临时目录是哪个命令的结果并不直接明显。 您可以使用命令列表 ( setup.py --help-commands ) 和一些猜测来确定哪个命令创建了每个临时目录。 然后在该命令上使用--help以查看如何更改其工作目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM