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

2024-10-04 01:37:42 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:我如何系统地研究解释器在任何时候所涉及的文件(比如在调试模式下)。你知道吗

当一切都失败时,我得到错误信息。我所要求的恰恰相反:每样东西都能工作,但我不知道我有多少多余的垃圾与它的用法相比,即使我可以想象像pynotify这样的东西可能可以追踪它。你知道吗

上下文:

我花了整整一个上午的时间练习试错法,以使一个软件包能够正常工作。我确信我已经把相关的python包复制到了至少3个目录中,并且把我的windowssetx -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知道这个问题的未来正在被解决,但是它不探究过去。所以随着python2xx到3xx的转换,这个问题必须变得越来越重要?你知道吗


Tags: 文件path目录内容用法时间解释器list
1条回答
网友
1楼 · 发布于 2024-10-04 01:37:42

python的动态特性使得这几乎是不可能的任务。你知道吗

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

然后是向后兼容性测试;如果sqlite3不存在,则导入pysqlite2,如果当前版本的Python中不存在collections.Counter,则使用后端口模块,等等。根据当前平台的不同,存在特定于平台的模块(os.pathposixpathntpath(相同的代码,但已重命名)或riscospath),整体销售导入到主模块(posixntos2ceriscos都可以由os模块根据平台提供功能)。你知道吗

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

相关问题 更多 >