问题:如何系统地探究解释器随时涉及的文件(例如在 Debug模式下)。
当一切失败时,我收到错误消息。我要求的是相反的:一切正常,但我不知道与它的用法相比,我有多少多余的垃圾,尽管我可以想象像 pynotify 这样的东西可能可以追踪它。
上下文:
我花了整个上午的时间来练习试错以使包正常工作。我确定我已经将相关的 python 包复制到至少 3 个目录中,并用垃圾严重扰乱了我的 Windows 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知道这个问题的 future 正在得到解决,但它并没有探究过去。那么随着从 Python 2xx 到 3xx 的过渡,这个问题一定变得越来越相关吗?
最佳答案
Python 的动态特性使这成为一项几乎不可能完成的任务。
例如,函数也可以导入。您要运行所有模块中的所有代码吗?
然后还有向后兼容性测试; import pysqlite2
如果 sqlite3
不存在,如果 collections.Counter
在当前版本的 Python 中不存在,则使用向后移植模块,等等。有特定于平台的模块(os.path
是 posixpath
、ntpath
(相同代码但重命名)或 riscospath
取决于当前平台),并批量导入主模块(posix
、nt
、os2
、ce
和 riscos 都可以被 os 模块使用,具体取决于提供功能的平台。
使用 setuptools
的包声明其依赖项,并且可以通过 pkg_resources
库发现。这是您可以合理发现的极限。
关于python - 如何系统地识别 Python 在其可访问的包/模块树中的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309685/