2

问题:如何系统地探测解释器在任何时候都涉及的文件(如在调试模式下)。

当一切都失败时,我收到错误消息。我要求的是相反的:一切正常,但我不知道与它的使用相比我有多少多余的垃圾,即使我可以想象像 pynotify 这样的东西可能可以追踪它。

语境:

我整个上午都在反复试验以使程序包正常工作。我确定我已将相关的 python 包复制到至少 3 个目录中,并setx -m path用垃圾严重弄乱了我的窗口。现在我想知道如何在不破坏任何依赖关系的情况下将其全部清理干净,并实际从过程中学习

我不可能是唯一对此感到疑惑的人。一些有才华的测试开发人员必须编写了一个脚本/包:

import everything from everywhere
check for all dependencies
E = list(errorMessages)
L = list_of_stuff_that_was_used
print L
print E

因此,如果我存储了不在 中的内容L,我可以将其删除。但当然,探测必须彻底,以耗尽所有可访问的文件(或至少积极使用的目录)。

问题不是关于什么:我对sys.path. 这是微不足道的。

更多背景:

我从The Hitchhikers Guide to Packaging了解到这个问题的未来正在被解决,但它并没有探究过去。那么随着从 Python 2xx 到 3xx 的过渡,这个问题一定会变得越来越重要吗?

4

1 回答 1

3

python 的动态特性使其成为一项几乎不可能完成的任务。

例如,函数也可以导入。您要运行所有模块中的所有代码吗?

然后是向后兼容性测试;如果不存在则导入,pysqlite2如果当前版本的 Python 中不存在sqlite3则使用后向端口模块collections.Counter等。有特定于平台的模块(os.pathposixpathntpath(相同的代码但重命名)或riscospath取决于当前平台),以及整个- sale 导入到主模块中(posix, nt, os2,ceriscosall 可以由os模块使用,具体取决于平台来提供功能)。

使用的包setuptools声明它们的依赖关系并且可以通过pkg_resources库发现。这是你可以合理发现的极限。

于 2013-03-09T10:33:02.827 回答