首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Module对象查找模块的路径

使用Module对象查找模块的路径
EN

Stack Overflow用户
提问于 2017-11-08 06:15:05
回答 4查看 325关注 0票数 2

Module对象到声明它的文件的路径的正确方法是什么?准确地说,我正在寻找关键字module出现的文件。

间接方法是在每个模块中找到自动定义的eval方法的位置。moduleloc(mm::Module) = first(functionloc(mm.eval, (Symbol,)))

例如

代码语言:javascript
复制
moduleloc(mm::Module) = first(functionloc(mm.eval, (Symbol,)))
using DataStructures
moduleloc(DataStructures)

产出:

代码语言:javascript
复制
/home/oxinabox/.julia/v0.6/DataStructures/src/DataStructures.jl

这种间接的方法很有效,但感觉有点杂乱无章。我是不是错过了一些内置的功能来完成这个任务?

我会提醒您,模块与包不是一回事。考虑子模块的存在,甚至是通过include加载包目录或加载路径之外的渐开线路径来加载的模块。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-08 20:36:00

模块根本不存储文件的位置,它们是在哪里定义的。您可以在它们在C中的定义中看到这一点。你唯一的希望就是看看它们所承载的束缚。

方法,另一方面,要存储它们的文件位置。eval是在每个module (虽然不是baremodules)中定义的函数。更正确的做法可能是:

代码语言:javascript
复制
moduleloc(mm::Module) = first(functionloc(mm.eval, (Any,)))

因为这更精确地反映了自动定义的eval方法。

票数 1
EN

Stack Overflow用户

发布于 2017-11-08 07:29:04

如果您不是在寻找一种编程的方法,您可以使用methods函数。

代码语言:javascript
复制
using DataFrames
locations = methods(DataFrames.readtable).ms

它适用于所有方法,但要找到正确的方法并不难,除非您有大量的方法,而这些方法仅在很小的程度上有所不同。

票数 0
EN

Stack Overflow用户

发布于 2022-06-20 15:18:58

现在有了pathof

代码语言:javascript
复制
using DataStructures

pathof(DataStructures)
"/home/ederag/.julia/packages/DataStructures/59MD0/src/DataStructures.jl"

另见:帕克迪尔

代码语言:javascript
复制
pkgdir(DataStructures)
"/home/ederag/.julia/packages/DataStructures/59MD0"

用julia测试-1.7.3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47172777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档