来自已加载模块对象的模块文件路径

Module filepath from loaded module object

在python中是

import argparser
print argparser.__file__

我的问题是:

这并不能完全回答您的问题,但这是我在 Haskell 中找到模块位置的方式。假设我有一个名为 Data.Text 的模块,我想找到它的位置。然后我最初发现它的包名:

$ ghc-pkg find-module Data.Text
/nix/store/cq4qqjii3s9ghr6p59kkrdf44wnyhpp4-ghc-7.8.4/lib/ghc-7.8.4/package.conf.d
/home/sibi/.ghc/x86_64-linux-7.8.4/package.conf.d
   text-1.2.0.4

现在我知道包名是text-1.2.0.4。所以,现在我所做的就是使用这个命令来找到模块​​位置:

$ ghc-pkg describe text-1.2.0.4   # (Just text should also work)

这会给你很大的输出。您感兴趣的字段是 import-dirslibrary-dirs

要查找安装包的来源,可以使用@Martin提到的cabal get <package_name>

我很确定你不能做 Haskell 中的第一件事。但是,如果你只是想自己找出这条路径,你可以使用命令

ghc-pkg describe <package>

其中 <package> 是模块所属包的名称。

要下载包的源代码,只需使用

cabal get <package>

它会将没有任何依赖项的源下载到当前目录中的目录 <package>-<version> 中。