python - 如何系统地识别 Python 在其可访问的包/模块树中的依赖关系?

标签 python python-2.7 python-3.x pythonpath

问题:如何系统地探究解释器随时涉及的文件(例如在 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.pathposixpathntpath(相同代码但重命名)或 riscospath取决于当前平台),并批量导入主模块(posixntos2ce 和 riscos 都可以被 os 模块使用,具体取决于提供功能的平台。

使用 setuptools 的包声明其依赖项,并且可以通过 pkg_resources 库发现。这是您可以合理发现的极限。

关于python - 如何系统地识别 Python 在其可访问的包/模块树中的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15309685/

相关文章:

python - 检测 Ctrl+S ionic QTextedit?

python - 为什么切片分配比 `list.insert` 快?

Python Pandas - 聚合和计数

sql-server - SQL 查询 - "TypeError: sequence item 0: expected string, Decimal found"使用值

python - 如何在 PyPI 项目中存储 API key ?

python - 将工作代码移动到单独的模块时出现 unicode utf8 错误

python - 我尝试使用 python 函数写入 azure blob 存储时遇到 Value 'func.Out' is unsubscriptable

python - 为什么我在语法完全有效的一行中出现语法错误 "SyntaxError: invalid syntax"?

Python Sort 方法无法正确排序分数

python-2.7 - 如何更改 SaleOrder 的名称格式?奥杜10