gpt4 book ai didi

haskell - 无法引用包

转载 作者:行者123 更新时间:2023-12-04 09:34:06 24 4
gpt4 key购买 nike

由于据报道缺少 Text.Pandoc.JSON,我无法运行(或编译)一个简单的脚本依赖性。这个问题和另一个类似:Pandoc 'Could not find module ...' for installed module
这是脚本:

import Text.Pandoc.JSON

pagebreakXml :: String
pagebreakXml = "<w:p><w:r><w:br w:type=\"page\"/></w:r></w:p>"

pagebreakBlock :: Block
pagebreakBlock = RawBlock (Format "openxml") pagebreakXml

blockSwapper :: Block -> Block
blockSwapper (Para [Str "<div class=\"docxPageBreak\"></div>"]) = pagebreakBlock
blockSwapper blk = blk

main = toJSONFilter blockSwapper
为了编译它,我安装了 Haskell 以及 pandoc像这样的包:
$ curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
$ cabal install pandoc
安装大约需要 20 分钟。
现在,当我尝试运行它时,我得到了这个:
$ runghc -v docx-page-filter.hs
Glasgow Haskell Compiler, Version 8.8.3, stage 2 booted by GHC version 8.6.3
Using binary package database: /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d/package.cache
package flags []
loading package database /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
package flags []
loading package database /Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/package.conf.d
wired-in package ghc-prim mapped to ghc-prim-0.5.3
wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0
wired-in package base mapped to base-4.13.0.0
wired-in package rts mapped to rts-1.0
wired-in package template-haskell mapped to template-haskell-2.15.0.0
wired-in package ghc mapped to ghc-8.8.3
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.18 milliseconds, allocated 0.056 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 3.22 milliseconds, allocated 1.706 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.11 milliseconds, allocated 0.029 megabytes
Loading package ghc-prim-0.5.3 ... linking ... done.
Loading package integer-gmp-1.0.2.0 ... linking ... done.
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.dylib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name liblibiconv.dylib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.lib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.lib
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.dll.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.dll.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv.a
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name libiconv
*** gcc:
gcc -DTABLES_NEXT_TO_CODE -B/Users/eugene/.ghcup/ghc/8.8.3/lib/ghc-8.8.3/base-4.13.0.0 --print-file-name iconv
Loading package base-4.13.0.0 ... linking ... done.
Search directories (user):
Search directories (gcc):
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.07 milliseconds, allocated 0.044 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 0.03 milliseconds, allocated 0.014 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.05 milliseconds, allocated 0.028 megabytes
*** Desugar:
*** Simplify [expr]:
!!! Simplify [expr]: finished in 0.10 milliseconds, allocated 0.061 megabytes
*** CorePrep [expr]:
!!! CorePrep [expr]: finished in 0.04 milliseconds, allocated 0.022 megabytes
*** ByteCodeGen [Ghci1]:
!!! ByteCodeGen [Ghci1]: finished in 0.11 milliseconds, allocated 0.065 megabytes
*** Chasing dependencies:
Chasing modules from:
!!! Chasing dependencies: finished in 0.04 milliseconds, allocated 0.021 megabytes
Stable obj: {}
Stable BCO: {}
unload: retaining objs []
unload: retaining bcos []
Ready for upsweep []
Upsweep completely successful.
*** Deleting temp files:
Deleting:
*** Chasing dependencies:
Chasing modules from: *docx-page-filter.hs
!!! Chasing dependencies: finished in 0.60 milliseconds, allocated 0.334 megabytes
Stable obj: {}
Stable BCO: {}
unload: retaining objs []
unload: retaining bcos []
Ready for upsweep
[NONREC
ModSummary {
ms_hs_date = 2020-07-01 09:51:29.83381948 UTC
ms_mod = Main,
ms_textual_imps = [(Nothing, Prelude), (Nothing, Text.Pandoc.JSON)]
ms_srcimps = []
}]
*** Deleting temp files:
Deleting:
compile: input file docx-page-filter.hs
*** Checking old interface for Main (use -ddump-hi-diffs for more details):
[1 of 1] Compiling Main ( docx-page-filter.hs, interpreted )
*** Parser [Main]:
!!! Parser [Main]: finished in 0.35 milliseconds, allocated 0.332 megabytes
*** Renamer/typechecker [Main]:
!!! Renamer/typechecker [Main]: finished in 1.57 milliseconds, allocated 0.021 megabytes

docx-page-filter.hs:1:1: error:
Could not find module ‘Text.Pandoc.JSON’
Locations searched:
Text/Pandoc/JSON.hs
Text/Pandoc/JSON.lhs
Text/Pandoc/JSON.hsig
Text/Pandoc/JSON.lhsig
|
1 | import Text.Pandoc.JSON
| ^^^^^^^^^^^^^^^^^^^^^^^
Upsweep partially successful.
*** Deleting temp files:
Deleting:
Failed, no modules loaded.
*** Deleting temp files:
Deleting:
*** Deleting temp dirs:
Deleting:
$
当我尝试通过 ghc --make -v docx-page-filter.hs 编译它时,我得到了类似的输出。
我注意到的可能有帮助的事情:
  • 上面的输出包含以下几行:
    Search directories (user):
    Search directories (gcc):
    这是否意味着已安装的库不在编译器的搜索路径中? 是否可以手动告诉编译器在哪里查找包?
  • 以下命令不输出任何内容:
    $ cabal list --installed | grep pandoc
    $
    $ ghc-pkg list | grep pandoc
    $
    但是,运行以下命令显示 pandoc :
    $ ls -l /Users/eugene/.cabal/store/ghc-8.8.3/ | grep pndc
    drwxr-xr-x 5 eugene staff 160 Jul 1 15:07 pndc-2.10-1cd05aed
    drwxr-xr-x 5 eugene staff 160 Jul 1 15:07 pndc-2.10-e61ae373
    drwxr-xr-x 5 eugene staff 160 Jul 1 14:52 pndc-typs-1.21-39168129
    $
  • 尝试安装或重新安装 pandoc导致无操作:
    $ cabal install pandoc
    Resolving dependencies...
    Up to date
    Symlinking 'pandoc'
    $
    $ cabal install pandoc --reinstall
    Resolving dependencies...
    Up to date
    Symlinking 'pandoc'
    $

  • 有人可以发现我做错了什么吗? 我不需要 cabal.project文件或任何东西,我需要编译一个文件并使用它。但我可以尝试探索 cabal.project .

    最佳答案

    几轮谷歌搜索让我意识到,为了指定包的路径, -package-db 必须使用选项。
    就我而言,为了编译文件,我必须这样做:

    ghc --make -v docx-page-filter.hs -package-db=/Users/eugene/.cabal/store/ghc-8.8.3/package.db
    更多关于这个问题的一个很好的回答在这里: Cabal cannot find locally sourced (yet correctly installed) packages

    关于haskell - 无法引用包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62677686/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com