2010-06-23 7 views
28

Ich habe das so-und-so ein Paket mit Cabal installiert, und ich kann ein Programm erstellen, das davon abhängt cabal build. Aber wenn ich das gleiche Programm in ghci lade, beklagt sich ghci, dass es "Modul so-und-so" nicht finden konnte.Wie bekomme ich ghci, um Pakete zu sehen, die ich von cabal installiert habe?

Ich bin überrascht, dass dies nicht "nur funktioniert." Wie kann ich ghci sagen, wo ich die Pakete finde, die ich mit cabal installiert habe?

Hier ist mein Setup: Ich verwende GHC 6.10.4 unter Mac OS X 10.6.3, cabal-installiere Version 0.6.2 mit Version 1.6.0.3 der Cabal-Bibliothek.

Antwort

22

Sie benötigen

ghci -package such-and-such 

Und nochmals zu überprüfen, dass such-and-such zu GHC wirklich sichtbar ist, führen ghc-pkg list | grep such-and-such. Hier

+1

Ich bevorzuge diese Antwort, da ich den globalen Paket-Namespace lieber nicht mit exponierten Paketen durcheinander bringen möchte. Bonusrunde: * In * ghci, wie kann ich ein Paket dynamisch hinzufügen? –

+0

': set -package haskell-src-meta' funktioniert. Ich denke, du kannst jedes 'ghci' /' ghc' Flag mit ': set' setzen. Wie ': set -XTemplateHaskell'. –

14

ghc-pkg list in der Befehlszeile wird Ihnen sagen, was Ihre installierten Pakete sind. Das installierte Paket ist möglicherweise ausgeblendet. In diesem Fall können Sie es unter ghc-pkg expose {pkg-id} anzeigen.

+0

ist, was das Ausgänge: bash-3.2 $ ghc-pkg Liste LRUCache /opt/local/lib/ghc-6.10.4/./package.conf: /Users/dominic/.ghc/x86_64 -darwin-6.10.4/package.conf: lrucache-1.0 Wie gehe ich davon, wo das Paket * ist *? Und dann benutze ich 'ghci -i'? –

+0

Ja! 'ghc-pkg register so-and-so' ist in der Tat die erforderliche Magie. Vielen Dank! –

+0

Wahrscheinlich möchten Sie Ihre Cabal-Einstellungen ändern, um globale Register zu erstellen. Ändere ~/.cabal/config, um 'user-install: False' zu ​​sagen. – sclv