Haskell Could not find module `Network.HTTP.Conduit'
Asked Answered
S

2

8

I can't get this import to work in haskell.

import Network.HTTP.Conduit

When I try to compile I get the following error:

$ ghc Play.hs

Play.hs:1:8:
    Could not find module `Network.HTTP.Conduit'
    Use -v to see a list of the files searched for.

The same error occurs if I try to load the file in GHCI.

I have installed the latest version of http-conduit via cabal. Here is the output from cabal:

$ cabal -list http-conduit
* http-conduit
    Synopsis: HTTP client package with conduit interface and HTTPS support.
    Default available version: 1.8.2
    Installed versions: 1.6.0.4, 1.8.2
    Homepage: http://www.yesodweb.com/book/http-conduit
    License:  BSD3

* http-conduit-browser
    Synopsis: Browser interface to the http-conduit package
    Default available version: 1.6.3
    Installed versions: 1.6.3
    Homepage: https://github.com/exbb2/http-conduit-browser
    License:  BSD3

If it might make a difference, I am using Ubuntu 12.04.

Any ideas why this won't import?

Edit: Output from 'ghc-pkg list':

$ ghc-pkg list http-conduit
WARNING: there are broken packages.  Run 'ghc-pkg check' for more details.
/var/lib/ghc/package.conf.d
   http-conduit-1.6.0.4
   http-conduit-1.8.2
~/.ghc/i386-linux-7.4.1/package.conf.d

And from 'ghc-pkg check':

$ ghc-pkg check
The following packages are broken, either because they have a problem
listed above, or because they depend on a broken package.
derive-2.5.11
derive-2.5.11
peakachu-0.3.0
peakachu-0.3.0

After running 'ghc-pkg unregister derive-2.5.11' and 'ghc-pkg unregister peakachu-0.3.0' the warnings from 'ghc-pkg list http-conduit' no longer occur but the problem is not fixed.

From the stderr of 'ghc-pkg check':

Warning: haddock-interfaces: /usr/local/share/doc/http-conduit-browser-1.6.3/html/http-conduit-browser.haddock doesn't exist or isn't a file
Warning: haddock-html: /usr/local/share/doc/http-conduit-browser-1.6.3/html doesn't exist or isn't a directory
Warning: haddock-interfaces: /usr/local/share/doc/http-conduit-1.8.2/html/http conduit.haddock doesn't exist or isn't a file
Warning: haddock-html: /usr/local/share/doc/http-conduit-1.8.2/html doesn't exist or isn't a directory

Output when compiling with '-package http-conduit':

$ ghc -package http-conduit Play.hs -v
<command line>: cannot satisfy -package http-conduit: 
    http-conduit-1.8.2-13f7764675fbae0ac9de8bcf7925f78e is unusable due to missing or recursive dependencies:
      asn1-data-0.7.1-cb75ffc05237f33632b42d2fb76a7a29 attoparsec-conduit-0.5.0.1-5fe0cc7293ce100ae00db2d7e67f682f blaze-builder-conduit-0.5.0.1-59a72b475661fd25bd4619f58e8b40de certificate-1.3.1-dd3ba477e9b28bd6e4ab3d8865f22a87 conduit-0.5.2.4-88846c185b7e5037f242975916feb7e2 failure-0.2.0.1-49a74d2d91efe8118b3ce4233a86c2be lifted-base-0.1.2-1905d9349e322d5bbdfc585c7291efe4 monad-control-0.3.1.4-2629785f64d5c6eb4b6a72e854127870 network-2.4.0.1-53e0509d073f1b67ec3e641af74cb551 resourcet-0.4.0.1-07b5b503a019bd31b56feec9c26dfaec tls-1.0.1-f578324e807426668353637611a71070 tls-extra-0.5.0-459144227bb52a8255b4a149f58f3520 transformers-base-0.4.1-d27396afe6939ffd84456ceebf04bfbb zlib-conduit-0.5.0.1-f6b2f2e99cffe03ace3d731c20826f12
http-conduit-1.6.0.4-963a389e596e9c9f7c021dc97238cc52 is unusable due to missing or recursive dependencies:
  asn1-data-0.7.1-cb75ffc05237f33632b42d2fb76a7a29 attoparsec-conduit-0.5.0.1-5fe0cc7293ce100ae00db2d7e67f682f blaze-builder-conduit-0.5.0.1-59a72b475661fd25bd4619f58e8b40de certificate-1.2.8-78aa58c1d97c0315f599845cf7924ae2 conduit-0.5.2.4-88846c185b7e5037f242975916feb7e2 failure-0.2.0.1-49a74d2d91efe8118b3ce4233a86c2be lifted-base-0.1.2-1905d9349e322d5bbdfc585c7291efe4 monad-control-0.3.1.4-2629785f64d5c6eb4b6a72e854127870 network-2.4.0.1-53e0509d073f1b67ec3e641af74cb551 resourcet-0.4.0.1-07b5b503a019bd31b56feec9c26dfaec tls-0.9.10-bedda6ba89d62d8b86895a07b0d4437e tls-extra-0.4.6-e10848dbad24b59704ecb96d86e5362a transformers-base-0.4.1-d27396afe6939ffd84456ceebf04bfbb zlib-conduit-0.5.0.1-f6b2f2e99cffe03ace3d731c20826f12

It appears that I do have all of the dependencies listed. Here is the output from 'cabal list'

* asn1-data
Synopsis: ASN1 data reader and writer in RAW, BER and DER forms
Default available version: 0.7.1
Installed versions: 0.7.1
Homepage: http://github.com/vincenthz/hs-asn1-data
License:  BSD3

* attoparsec-conduit
Synopsis: Consume attoparsec parsers via conduit.
Default available version: 0.5.0.2
Installed versions: 0.5.0.1
Homepage: http://github.com/snoyberg/conduit
License:  BSD3

* blaze-builder-conduit
Synopsis: Convert streams of builders to streams of bytestrings.
Default available version: 0.5.0.1
Installed versions: 0.5.0.1
Homepage: http://github.com/snoyberg/conduit
License:  BSD3

* certificate
Synopsis: Certificates and Key Reader/Writer
Default available version: 1.3.1
Installed versions: 1.2.8, 1.3.1
Homepage: http://github.com/vincenthz/hs-certificate
License:  BSD3

* conduit
Synopsis: Streaming data processing library.
Default available version: 0.5.2.7
Installed versions: 0.5.2.4
Homepage: http://github.com/snoyberg/conduit
License:  BSD3

* failure
Synopsis: A simple type class for success/failure computations.
Default available version: 0.2.0.1
Installed versions: 0.2.0.1
Homepage: http://www.haskell.org/haskellwiki/Failure
License:  BSD3

* lifted-base
Synopsis: lifted IO operations from the base library
Default available version: 0.2
Installed versions: 0.1.2
Homepage: https://github.com/basvandijk/lifted-base
License:  BSD3

* monad-control
Synopsis: Lift control operations, like exception catching, through monad
          transformers
Default available version: 0.3.1.4
Installed versions: 0.3.1.4
Homepage: https://github.com/basvandijk/monad-control
License:  BSD3

* network
Synopsis: Low-level networking interface
Default available version: 2.4.0.1
Installed versions: 2.4.0.1
Homepage: https://github.com/haskell/network
License:  BSD3

* resourcet
Synopsis: Deterministic allocation and freeing of scarce resources.
Default available version: 0.4.0.2
Installed versions: 0.4.0.1
Homepage: http://github.com/snoyberg/conduit
License:  BSD3

* tls
Synopsis: TLS/SSL protocol native implementation (Server and Client)
Default available version: 1.0.1
Installed versions: 0.9.10, 1.0.1
Homepage: http://github.com/vincenthz/hs-tls
License:  BSD3

* tls-extra
Synopsis: TLS extra default values and helpers
Default available version: 0.5.0
Installed versions: 0.4.6, 0.4.6, 0.5.0, 0.5.0
Homepage: http://github.com/vincenthz/hs-tls
License:  BSD3

* transformers-base
Synopsis: Lift computations from the bottom of a transformer stack
Default available version: 0.4.1
Installed versions: 0.4.1
Homepage: https://github.com/mvv/transformers-base
License:  BSD3

* zlib-conduit
Synopsis: Streaming compression/decompression via conduits.
Default available version: 0.5.0.1
Installed versions: 0.5.0.1
Homepage: http://github.com/snoyberg/conduit
License:  BSD3

This is the output from 'ghc-pkg list xxxx' where xxxx is each of the packages in the dependencies list resulting from compiling with the '-package http-conduit' flag:

/var/lib/ghc/package.conf.d:
asn1-data-0.7.1

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
attoparsec-conduit-0.5.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
blaze-builder-conduit-0.5.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
certificate-1.2.8
certificate-1.3.1

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
conduit-0.5.2.4

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
failure-0.2.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:
failure-0.2.0.1

/var/lib/ghc/package.conf.d:
lifted-base-0.1.2

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
monad-control-0.3.1.4

~/.ghc/i386-linux-7.4.1/package.conf.d:
monad-control-0.3.1.4

/var/lib/ghc/package.conf.d:
network-2.4.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:
network-2.4.0.1

/var/lib/ghc/package.conf.d:
resourcet-0.4.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
tls-0.9.10
tls-1.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
tls-extra-0.4.6
tls-extra-0.5.0

~/.ghc/i386-linux-7.4.1/package.conf.d:

/var/lib/ghc/package.conf.d:
transformers-base-0.4.1

~/.ghc/i386-linux-7.4.1/package.conf.d:
transformers-base-0.4.1

/var/lib/ghc/package.conf.d:
zlib-conduit-0.5.0.1

~/.ghc/i386-linux-7.4.1/package.conf.d:
Shalon answered 2/11, 2012 at 17:51 Comment(13)
Just to be sure: Your GHC version is 7.x.y? If it's 6.x.y, you'd need the --make flag, but I don't think 12.04 comes with a ghc-6.*, does it?Soekarno
I am using version 7.4.1. That is the version that is installed on apt-get install ghc.Shalon
Okay, so it's not that. What's the output of ghc-pkg list http-conduit?Soekarno
Ah, this seems promissing. I updated the original post with the outputShalon
Hm, you have two exemplars each of derive-2.5.11 and peakachu-0.3.0, that shouldn't be. I expect one in the global db and one in the user db for each. What happens if you try ghc-pkg unregister peakachu-0.3.0 --user (similar for derive-2.5.11)? Does it warn that that would break umpteen other packages?Soekarno
Unregistered without a problem. The output from 'ghc-pkg list http-conduit' does not give a warning any longer. However, this did not fix the problem.Shalon
Any further output from ghc-pkg check?Soekarno
ghc-pkg check outputs a bunch of missing documentation files. If I grep for http-conduit, it shows there is missing documentation. I've added it to the original message.Shalon
Missing docs shouldn't matter for compilation. ghc-pkg list says you have http-conduit, but when you try to use it, ghc can't find the modules, right? Try compiling with an explicit flag, ghc -package http-conduit Play.hs or --make. And perhaps also use -v to make ghc chatty.Soekarno
When compiling and specifying -package http-conduit, it does appear to be missing some dependencies for both versions of http-conduit. I've added the output above.Shalon
What does ghc-pkg say about the listed packages?Soekarno
I've posted the output from both cabal list and ghc-pkg list in the original message. I appear to have all of the dependencies.Shalon
let us continue this discussion in chatSoekarno
S
10

I was unable to fix the problem directly. But, I was able to "nuke" the installed packages and start fresh.

rm -rf ~/.ghc/i386-linux-7.4.1
cabal install http-conduit

After this, it worked fine. You will have to re-install all of your other packages as well.

Shalon answered 4/11, 2012 at 20:39 Comment(1)
I would recommend learning about cabal sandboxes coldwa.st/e/blog/2013-08-20-Cabal-sandbox.html - since using them I rarely have to resort to nuking my .ghc directory anymore.Handley
T
0

FWIW I used "cabal install http-conduit" then I got the following prompt:

Building     http-conduit-2.3.8 (lib)
Installing   http-conduit-2.3.8 (lib)
Completed    http-conduit-2.3.8 (lib)
Warning:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: Installation might not be completed as desired! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Without flags, the command "cabal install" doesn't expose libraries in a
usable manner. You might have wanted to run "cabal install --lib http-conduit".

Then I tried loading my file and got this in ghc:

Prelude> :l Main.hs
[1 of 1] Compiling Main             ( Main.hs, interpreted )

Main.hs:9:1: error:
    Could not load module ‘Network.HTTP.Conduit’
    It is a member of the hidden package ‘http-conduit-2.3.8’.
    You can run ‘:set -package http-conduit’ to expose it.
    (Note: this unloads all the modules in the current scope.)
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
  |
9 | import Network.HTTP.Conduit (simpleHttp)
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Failed, no modules loaded.

So "cabal install --lib http-conduit" fixes this.

Tremaine answered 10/3, 2021 at 6:4 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.