"setup.py clean"究竟做了什么?

Ale*_*lex 7 python setuptools setup.py python-2.7

setupsetuptools0.9.6版调用from 调用我可以运行以下命令:

python setup.py clean
Run Code Online (Sandbox Code Playgroud)

但这究竟是做什么的呢?这个命令的帮助有点稀疏,并且正在运行

python setup.py clean --all
Run Code Online (Sandbox Code Playgroud)

给出了无用的陈述

'build/lib.linux-i686-2.7' does not exist -- can't clean it
Run Code Online (Sandbox Code Playgroud)

是否有可能使用此clean命令来自动清理.pyc以及结尾的临时python文件.~?可以使用此命令完成此操作,是否需要进行配置,...?

小智 6

据我所知,它只是删除了build子目录,Python放置了所有要安装的文件,包括需要编译的扩展.

*.pyc除非您在源目录中的某些脚本上运行Python(如果运行测试可能会发生这种情况),或者直接从源目录导入模块,否则其他地方不应该有任何文件. *~文件是emacs备份文件,因此setup.py无论如何都不会被清除.(如果您已经看过这种行为make clean,那只是因为有人将其编码到Makefile中.)

您可能可以通过(递归)删除*.pyc文件的方式覆盖clean命令,但我怀疑是否需要.一般来说,如果前者发生了变化,Python足够聪明,可以*.py*.pyc文件重新编译成文件,否则使用后者只会更快.

我遇到过一个警告,那就是在执行a时setup.py build_ext --inplace,清理不会删除已编译的模块,因为这些模块不在构建目录中.对我来说,感觉就像干净的命令的缺点.

总的来说,看起来添加了干净的命令以符合其make行为,但它似乎没有增加太多.

  • @Garrett如果这些只是纯Python模块,你可以在评论的问题中使用(mofidied)查找建议:`find -name"*pyc"-delete`.如果有其他文件(从Cython或C源文件编译),事情就会变得更加激烈,您可以尝试为每种文件类型运行find命令. (2认同)
  • “据我所知” - 在发布此答案之前,您能否确认您确实*尝试过*`python setup.py clean`?对我来说,它不会删除 `build/`,除非我使用 `--all`! (2认同)