python setup.py sdist bdist_wheel 的输出目录
Output directories for python setup.py sdist bdist_wheel
做的时候
python setup.py sdist bdist_wheel
它创建 build
、dist
、packagename.egg-info
目录。我想让它们离开当前文件夹。
我试过了:
--dist-dir=../dist
:适用于 sdist
但 packagename.egg-info
仍然存在
--bdist-dir=../dist
:例如:
python setup.py sdist bdist_wheel --dist-dir=../dist --bdist-dir=../dist2
有效,最终的 bdist 包在 ../dist
中。但是当前文件夹仍然有新的目录build
、dist
、packagename.egg-info
,这是我不想要的。
问题:如何将所有内容(sdist 和 bdist_wheel 的输出)放在当前文件夹之外?
我当然可以用mv
、rm -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-base
和 egg-base
不匹配,我会收到一个关于未使用相对路径的奇怪错误。)
这足以将所有临时目录放在源文件夹之外。
不幸的是,哪个临时目录是哪个命令的结果并不直接明显。您可以使用命令列表 (setup.py --help-commands
) 和一些猜测来确定哪个命令创建了每个临时目录。然后在该命令上使用 --help
以查看如何更改其工作目录。
做的时候
python setup.py sdist bdist_wheel
它创建 build
、dist
、packagename.egg-info
目录。我想让它们离开当前文件夹。
我试过了:
--dist-dir=../dist
:适用于sdist
但packagename.egg-info
仍然存在--bdist-dir=../dist
:例如:python setup.py sdist bdist_wheel --dist-dir=../dist --bdist-dir=../dist2
有效,最终的 bdist 包在
../dist
中。但是当前文件夹仍然有新的目录build
、dist
、packagename.egg-info
,这是我不想要的。
问题:如何将所有内容(sdist 和 bdist_wheel 的输出)放在当前文件夹之外?
我当然可以用mv
、rm -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-base
和 egg-base
不匹配,我会收到一个关于未使用相对路径的奇怪错误。)
这足以将所有临时目录放在源文件夹之外。
不幸的是,哪个临时目录是哪个命令的结果并不直接明显。您可以使用命令列表 (setup.py --help-commands
) 和一些猜测来确定哪个命令创建了每个临时目录。然后在该命令上使用 --help
以查看如何更改其工作目录。