【发布时间】:2014-01-22 02:31:15
【问题描述】:
我目前正在尝试使用 pandoc(作为 Haskell 模块,而不是作为程序)将 MediaWiki 文本转换为其他格式。
让我们假设这个程序:
import Text.Pandoc.Readers.MediaWiki
main = do print "foo"
使用runghc 运行它时,我收到以下错误消息:
pandock.hs:1:8:
Could not find module `Text.Pandoc.Readers.MediaWiki'
Use -v to see a list of the files searched for.
我的第一个假设是 pandoc 要么没有安装,要么安装不正确。因此我用--force-reinstalls重新安装了它
$ cabal install pandoc --reinstall
[...]
In order, the following will be installed:
pandoc-1.12.3.1 (reinstall) changes: old-time-1.1.0.1 added
[...]
[32 of 55] Compiling Text.Pandoc.Readers.MediaWiki ( src/Text/Pandoc/Readers/MediaWiki.hs, dist/build/Text/Pandoc/Readers/MediaWiki.o )
[...]
Installing library in
/home/uli/.cabal/lib/x86_64-linux-ghc-7.6.3/pandoc-1.12.3.1
Installing executable(s) in /home/uli/.cabal/bin
Registering pandoc-1.12.3.1...
Installed pandoc-1.12.3.1
runghc -v pandock.hs 的输出很长,我假设相关部分是:
*** Chasing dependencies:
Chasing modules from: *pandock.hs
pandock.hs:1:8:
Could not find module `Text.Pandoc.Readers.MediaWiki'
Locations searched:
Text/Pandoc/Readers/MediaWiki.hs
Text/Pandoc/Readers/MediaWiki.lhs
Failed, modules loaded: none.
但是,~/.cabal/lib/x86_64-linux-ghc-7.6.3/pandoc-1.12.3.1/Text/Pandoc/Readers/Mediawiki/MediaWiki.hi 和 ~/.cabal/bin/pandoc 都存在。如何让 GHC 正确识别 cabal-installed 包?
任何帮助将不胜感激!
【问题讨论】:
-
您的 pandoc 安装在全局还是用户包数据库中?我相信
runghc只会在其中一个数据库中查找。 -
@user2407038 我没有使用
cabal install --global安装,所以我可以假设它在用户数据库中吗?我以相同的方式安装并定期使用了几十个其他软件包(cabal install pandoc),其中任何一个都没有问题(包括,例如 Yesod)。 -
在
pandock.hs所在的位置,你正在调用runghc,你有没有子目录叫做Text和Text/Pandoc? -
@kosmikus 不幸的是,没有 :-( 它是一个空目录(我特别注意这一点,因为我遇到了类似的问题,Python 没有找到 Tornado,因为文件名为 tornado.py)
-
@MigMit 是的,确实如此(
ghc-pkg list | grep pandoc产生pandoc-1.12.3.1)。我目前面临与yaml包完全相同的问题,因此它似乎并不特定于pandoc。我也尝试在另一台计算机上重现该问题,但没有成功。ghc-pkg check显示一些损坏的包,可能问题与它们有关?