首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python源代码中找到给定变量的导入模块依赖项

在Python源代码中找到给定变量的导入模块依赖项,可以通过以下步骤实现:

  1. 使用ast模块解析Python源代码,将源代码转换为抽象语法树(AST)。
  2. 遍历AST,找到所有的import语句和from ... import ...语句。
  3. 对于每个import语句和from ... import ...语句,获取导入的模块名或变量名。
  4. 判断给定变量是否在导入的模块中使用,如果是,则记录该导入语句。
  5. 最后,输出所有包含给定变量的导入模块依赖项。

下面是一个示例代码,演示如何实现上述步骤:

代码语言:txt
复制
import ast

def find_import_dependencies(source_code, variable_name):
    dependencies = []

    # 解析源代码为抽象语法树
    tree = ast.parse(source_code)

    # 遍历抽象语法树
    for node in ast.walk(tree):
        if isinstance(node, ast.Import):
            # 处理import语句
            for alias in node.names:
                if variable_name in alias.asname or variable_name in alias.name:
                    dependencies.append(alias.name)
        elif isinstance(node, ast.ImportFrom):
            # 处理from ... import ...语句
            if node.module:
                module_name = node.module
                for alias in node.names:
                    if variable_name in alias.asname or variable_name in alias.name:
                        dependencies.append(module_name + '.' + alias.name)

    return dependencies

# 示例源代码
source_code = '''
import math
from datetime import datetime
import numpy as np
from sklearn.linear_model import LinearRegression as LR
'''

# 给定变量名
variable_name = 'LR'

# 查找导入模块依赖项
dependencies = find_import_dependencies(source_code, variable_name)

# 输出结果
print(dependencies)

运行以上代码,输出结果为:

代码语言:txt
复制
['sklearn.linear_model.LinearRegression']

在这个例子中,我们在Python源代码中找到了给定变量LR的导入模块依赖项,即sklearn.linear_model.LinearRegression

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

前50个Python面试问题(最受欢迎)

这就是Python在处理循环方面与其他编程语言不同之处。 #9)如何在Python中定义数据类型以及整数和十进制数据类型保留多少字节? 答:在Python中,无需显式定义变量数据类型。...根据分配给变量值,Python存储适当数据类型。对于整数,浮点数等数字,数据长度是无限。 #10)如何在Python中使用数组? 答: Python不支持数组。...答:时间模块可用于计算应用程序不同阶段时间,并使用日志记录模块以任何首选格式将数据记录到文件系统中。 #21)如何在Python应用程序主流程中启动子流程?...问#26)Python识别哪些不同环境变量? 回答: PYTHONPATH:此环境变量可帮助解释器确定在程序中导入模块文件位置。...PYTHONSTARTUP:此环境变量包含包含源代码初始化文件路径。 PYTHONCASEOK:此变量用于在导入语句中查找第一个不区分大小写匹配 #27)什么是Python元组?

5.1K30

70个NumPy练习:在Python下一举搞定机器学习矩阵运算

快来试试你矩阵运算掌握到了什么程度: 1.导入模块numpy并以np作为别名,查看其版本 难度:1 问题:导入模块numpy并以np作为别名,打印版本号 答案: 你必须将模块numpy导入,以np命名...难度:1 问题:打印完整numpy数组a,且不截断。 输入: 输出: 答案: 25.如何在python numpy中导入含有数字和文本数据集,并保持文本完整性?...答案: 45.如何在numpy数组中找到最频繁出现值? 难度:1 问题:找到iris数据集中最常见花瓣长度值(第3列)。 输入: 答案: 46.如何找到首次出现值大于给定位置?...难度:3 问题:创建由分类变量分组行号。使用irisspecies中样品作为输入。 输入: 输出: 答案: 53.如何根据给定分类变量创建分组ID?...难度:3 问题:针对给定二维numpy数组计算每行min-max。 答案: 58.如何在numpy数组中找到重复记录?

20.6K42

Go命令官方指南【原译】

fix  更新包以使用新API fmt  gofmt(重新格式化)包源 generate  通过源代码生成Go文件 获取下载并安装包和依赖 安装编译和安装包和依赖 列表列表包或模块 mod模块维护...有关“go get”如何找到要下载源代码更多信息,请参阅“go help importpath”。 本文描述了使用GOPATH管理源代码依赖时get行为。...报告测试二进制文件导入路径是包导入路径,后跟“.test”后缀,“math / rand.test”。在构建测试时,有时需要专门为该测试重建某些依赖(最常见是测试包本身)。...供应商目录 Go 1.6包括支持使用外部依赖本地副本来满足这些依赖导入,通常称为vendoring。...否则,导入路径P表示在GOPATH环境变量中列出某些DIR目录DIR / src / P中找到包(有关更多详细信息,请参阅:'go help gopath')。

7.9K30

NumPy能力大评估:这里有70道测试题

何在不影响原始数组前提下替换满足给定条件? 难度:L2 问题:将 arr 中所有奇数替换成 -1,且不改变 arr。...如何在 NumPy 数组中找到 top-n 数值位置? 难度:L2 问题:在给定数组 a 中找到 top-5 最大值位置。...如何基于给定类别变量创建分组 id? 难度:L4 问题:基于给定类别变量创建分组 id。使用以下来自 iris species 样本作为输入。...如何在 2 维 NumPy 数组中找到每一行最大值? 难度:L2 问题:在给定数组中找到每一行最大值。...如何在 NumPy 数组中找到重复条目? 难度:L3 问题:在给定 NumPy 数组中找到重复条目(从第二次出现开始),并将其标记为 True。第一次出现条目需要标记为 False。

6.6K60

NumPy能力大评估:这里有70道测试题

何在不影响原始数组前提下替换满足给定条件? 难度:L2 问题:将 arr 中所有奇数替换成 -1,且不改变 arr。...如何在 NumPy 数组中找到 top-n 数值位置? 难度:L2 问题:在给定数组 a 中找到 top-5 最大值位置。...如何基于给定类别变量创建分组 id? 难度:L4 问题:基于给定类别变量创建分组 id。使用以下来自 iris species 样本作为输入。...如何在 2 维 NumPy 数组中找到每一行最大值? 难度:L2 问题:在给定数组中找到每一行最大值。...如何在 NumPy 数组中找到重复条目? 难度:L3 问题:在给定 NumPy 数组中找到重复条目(从第二次出现开始),并将其标记为 True。第一次出现条目需要标记为 False。

5.7K10

70道NumPy 测试题

何在不影响原始数组前提下替换满足给定条件? 难度:L2 问题:将 arr 中所有奇数替换成 -1,且不改变 arr。...如何在 NumPy 数组中找到 top-n 数值位置? 难度:L2 问题:在给定数组 a 中找到 top-5 最大值位置。...如何基于给定类别变量创建分组 id? 难度:L4 问题:基于给定类别变量创建分组 id。使用以下来自 iris species 样本作为输入。...如何在 2 维 NumPy 数组中找到每一行最大值? 难度:L2 问题:在给定数组中找到每一行最大值。...如何在 NumPy 数组中找到重复条目? 难度:L3 问题:在给定 NumPy 数组中找到重复条目(从第二次出现开始),并将其标记为 True。第一次出现条目需要标记为 False。

6.3K10

Python快速学习第八天

它们主要用于定义,比如变量、函数和类等。此外,因为只需要定义这些东西一次,导入模块多次和导入一次效果是一样。...因此,为了让模块测试代码更加好用,可以将其放置在if语句中,代码清单10-4所示。...但是,对于希望真正理解Python语言的人来说,要了解模块,是不能脱离源代码。阅读源代码,事实上是学习Python最好方式,除了自己编写代码外。 真正阅读不是问题,但是问题在于源代码在哪里。...获取给定子模式(组)匹配 start([group])                            返回给定匹配开始位置 end([group])                           ...如果模块包含测试代码,那么应该将这部分代码放置在检查 __name__ == '__main__'是否为真的if语句中。能够在PYTHONPATH中找到模块都可以导入

2.6K60

CMake 秘籍(五)

第三章,检测外部库和程序,展示了如何在系统上找到已安装依赖,并且到目前为止我们一直使用相同模式。然而,如果依赖关系未得到满足,我们最多只能导致配置失败并告知用户失败原因。...前者允许我们在构建时间获取项目的依赖,并且长期以来一直是 CMake 一部分。后者模块是在 CMake 3.11 版本中添加,允许我们在配置时间获取依赖。...我们可以使用add_subdirectory配置和构建模块,就好像外部依赖是我们项目源代码一部分一样。巧妙伪装!...这样,编译后模块可以在PYTHONPATH中找到。在本示例中,我们实现了 Python 和 C++层之间相对干净分离。...或者,我们可以将 Boost 源代码与我们项目一起打包,并将此依赖作为项目的一部分进行构建。Boost 是一种便携式方式,用于将 Python 与 C++接口。

42920

26 TIPS IN PYTHON

__future__模块允许你从Python未来版本导入功能。这简直就像时间旅行,或者魔法什么。 ? 为什么不开始导入花括号? geopy 地理可能是程序员难以挑战领域,时常让人找不清方向。...inspect pythoninspect模块非常有助于理解幕后发生事情。你甚至可以用它调用它自己方法! 下面的代码示例使用inspect.getsource()输出它自己源代码。...它返回一个map对象,该对象可以转换为一些可迭代对象,列表或元组。 newspaper3k 如果你还没有见过它,那么准备好让Pythonnewspaper3k模块震撼你。...在给定集合中找到重复概率非常低。即使有万亿个UUID,重复存在概率也远低于十亿分之一。非常有用两行代码。 Virtual environments 这可能是我最喜欢关于Python东西。...你很可能在同一时间处理多个Python项目。不幸是,有时两个项目将依赖于同一依赖关系不同版本。你选择在你系统上安装什么? 幸运是,Python对虚拟环境支持让你可以兼顾两者。

1.5K30

Go实战之常用命令行工具

如果一个或多个变量名作为参数给定,env将在其自己行上打印每个命名变量值 ?...上获 取mysq|driver并安装至本地) get解析并向当前开发模块添加依赖,然后构建并安装它们 第一步,要解决添加哪些依赖 对于每个命名包或包模式,get必须决定使用相应模块哪个版本。...如果没有参数,download将应用于主模块所有依赖 go命令将在正常执行期间根据需要自动下载模块。...它增加了构建当前模块包和依赖所需任何缺少模块,并且移除未使用模块。...如果给定了-m标志,why将参数视为模块列表,并在每个模块中找到指向任何包路径。默认情况下,why查询与“go list all”匹配graph,其中包括可访问包测试。

87210

Python 模块

例子 一个叫做aname模块Python代码一般都能在一个叫aname.py文件中找到。下例是个简单模块support.py。...搜索路径是一个解释器会先进行搜索所有目录列表。想要导入模块hello.py,需要把命令放在脚本顶端: #!...定位模块 当你导入一个模块Python解析器对模块位置搜索顺序是: 当前目录 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下每个目录 。...Python会智能地猜测一个变量是局部还是全局,它假设任何在函数内赋值变量都是局部。 因此,如果要给全局变量在一个函数里赋值,必须使用global语句。...考虑一个在Phone目录下pots.py文件。这个文件有如下源代码: #!

83730

听GPT 讲K8s源代码--cmd(一)

,其作用是检查和验证Kubernetes代码库中依赖,以确保所有依赖模块都在规定版本范围内。...UnwantedStatus:用于表示依赖验证结果,包括不期望依赖列表和错误信息。 module:表示代码库中一个依赖模块,包括名称和版本号。...moduleInSlice:检查给定依赖模块是否在依赖列表中。 convertToMap:将给定依赖列表转换为以依赖名称为键、版本号为值字典。...parseModule:解析给定字符串中依赖模块,返回对应module结构体。 main:程序入口函数,负责解析命令行参数、读取不需要依赖规范,执行依赖验证,并输出验证结果。...visit:递归访问代码库中依赖,并将其添加到依赖列表中。 doVisit:递归访问代码库中依赖辅助函数,通过解析go.mod文件获取依赖模块

17230

Go | 浅谈包管理模式

go编译器会在 $GOPATH/src 下面寻找对应模块,src 下每一个目录都可以对应一个模块,目录中目录也可以是一个模块 下面展示如何在入口文件main.go 里引入非标准库model包中变量...模块是相关Go包集合 modules是源代码交换和版本控制单元 go命令直接支持使用modules,包括记录和解析对其他模块依赖性。...go.mod 提供了module, require、replace和exclude 四个命令 module 语句指定包名字(路径) require 语句指定依赖模块 replace...语句可以替换依赖模块 exclude 语句可以忽略依赖模块 2、添加依赖 新建main.go文件 执行 go run main.go 一般来说 go mod 模式下,运行...go.sum文件是对导入依赖特定版本hash校验值,作用就是记录第一次下载依赖版本号,防止有依赖版本升级带来不兼容问题。所以,go.mod和go.sum文件都需要被加入版本管理中。

49220

CMake 秘籍(二)

在这种情况下,确保运行时依赖Python 解释器也得到满足是很重要。本食谱将展示如何在配置步骤中检测和使用 Python 解释器。...在线文档一个很好替代方法是浏览github.com/Kitware/CMake/tree/master/Modules中 CMake 模块源代码 - 它们标题文档说明了模块使用变量以及模块设置变量...由于这些是我们项目的必需依赖,如果找不到这些依赖,配置将停止并出现错误。 请注意,我们明确要求 CMake 检测 Python 可执行文件安装。这是为了确保可执行文件、头文件和库具有匹配版本。...在依赖Python 模块或包项目中,确保这些 Python 模块依赖得到满足是很重要。本配方将展示如何探测用户环境以找到特定 Python 模块和包。...本教程将向您展示如何在使用 CMake 3.9 或更高版本时,为简单 C++和 Fortran 程序检测并链接 OpenMP 使用导入目标。

42020

Python项目结构布局

从实际角度来看,“结构”意味着创建清晰代码,其逻辑和依赖关系清晰明了,以及文件和文件夹在文件系统中组织方式。 哪些函数应该放入哪些模块?数据如何在项目中流动?哪些功能和函数可以被分组并隔离?...通过回答这些问题,就可以开始在广义上规划最终产品外观。 这里将更详细地讨论Python模块导入系统,因为它们是强制项目结构核心元素。然后,将讨论如何构建可扩展和可靠测试代码各种观点。...setup.py: Python安装和分发配置文件,通常包括项目的元数据和依赖。 requirements.txt: 项目的依赖包列表,用于构建虚拟环境或部署项目。...由于Python导入模块处理方式,相对容易为Python项目创建结构。...全局状态或上下文大量使用:Table和Carpenter不是显式地将(高度、宽度、类型、木材等)传递给对方,而是依赖于可以被不同模块动态修改全局变量

32150

NumPy 秘籍中文第二版:一、使用 IPython

它还描述了如何使用easy_install和pip或从源代码安装 IPython 及其依赖: 在 Windows 上安装 IPython 和 Setuptools:IPython 网站上提供了适用于...安装 IPython:使用以下命令,通过easy_install安装 IPython 和本章中秘籍所需所有依赖: $ sudo easy_install ipython pyzmq tornado...另见 matplotlib 官方文档中说明 在这里中说明了如何在 SciPy 栈中安装。 运行 IPython 笔记本 IPython 具有一令人兴奋功能-网络笔记本。...您所见,我们正在使用默认配置文件。 服务器在本地计算机上端口 8888 上启动。稍后,您将在本章中学习如何配置这些设置。...导入网络笔记本 可以将 Python 脚本作为 Web 笔记本导入。 显然,我们也可以导入以前导出笔记本。 操作步骤 此秘籍向您展示如何将 Python 脚本作为 Web 笔记本导入

1.3K20

Go Modules 详解

所有前导动词作用如下: module:定义模块路径。 go:设置预期语言版本。 require:要求给定版本或更高版本特定模块。...当源代码中 import 指向模块不存在于 go.mod 文件中时,Go 命令行工具会自动搜索这个模块,并将最新版本(最后一个 tag 且非预发布稳定版本)添加到 go.mod 文件中。...;或设置环境变量 GOFLAGS 为 -mod=vendor,这样会假定 vendor 目录包含正确依赖副本,并忽略 go.mod 文件中依赖描述来构建。...:go mod init github.com/linehk/example。 go get:更改依赖版本(或添加新依赖)。...go build、go test 等命令:Go 命令行工具会根据需要添加新依赖:go test ./...,测试当前模块。 go list -m all:打印当前模块依赖

80930

2019年12月19日 Go生态洞察:Go模块化之旅

我们设计了一个新包golang.org/x/tools/go/packages,它抽象了查找和加载给定目标的Go源代码操作。...作为这一努力一部分,我们还在努力将各种源代码查询工具gocode、godef和go-outline统一为一个工具,该工具可从命令行使用,并支持现代IDE使用语言服务器协议。...Go模块设计通过在每个模块中存储go.sum文件来改进代码认证;该文件列出了模块每个依赖预期文件树加密散列。...使用模块时,go命令使用go.sum来验证在构建中使用依赖之前,它们是否与预期版本逐位相同。但go.sum文件只列出了该模块所使用特定依赖散列。...如果您正在添加新依赖或使用go get -u更新依赖. 模块认证必要性 go get依赖于连接级别的认证(HTTPS或SSH)来确保下载代码安全性。

9810

Go Modules 详解

所有前导动词作用如下: module:定义模块路径。 go:设置预期语言版本。 require:要求给定版本或更高版本特定模块。...当源代码中 import 指向模块不存在于 go.mod 文件中时,Go 命令行工具会自动搜索这个模块,并将最新版本(最后一个 tag 且非预发布稳定版本)添加到 go.mod 文件中。...;或设置环境变量 GOFLAGS 为 -mod=vendor,这样会假定 vendor 目录包含正确依赖副本,并忽略 go.mod 文件中依赖描述来构建。...:go mod init github.com/linehk/example。 go get:更改依赖版本(或添加新依赖)。...go build、go test 等命令:Go 命令行工具会根据需要添加新依赖:go test ./...,测试当前模块。 go list -m all:打印当前模块依赖

83920

资源 | Github项目推荐 | 微软开源Python静态类型检查器Pyright

它适用于大型Python源代码库。它可以在“监视”模式下运行,并在修改文件时执行快速增量更新。 没有Python环境依赖 Pyright是用TypeScript编写,在节点内运行。...它不需要安装Python环境或导入第三方包。 当它使用节点作为其扩展运行时,与VS代码编辑器一起使用效果非常好。 可配置性 Pyright支持灵活配置,可以对设置进行精细控制。...类型检查功能 Pyright 支持: PEP 484 类型提示,包括泛型 变量注释 PEP 526 语法 PEP 544 结构子类型 函数返回值、实例变量、类变量和全局变量类型推断 理解条件代码流构造智能类型约束..., if/else 语句 内置类型存根 Pyright包含来自 Typeshed stdlib类型存根最新副本。...,请注意以下事项: 安装nodejs 在克隆源主目录中打开终端窗口 执行 npm run install:all 来安装依赖 执行 npm run build 构建VS Code扩展包,请注意以下事项

80120
领券