私が取り組んでいるプロジェクトのためにcabal-dev
を試しています。プロジェクトはライブラリであり、そしてcabal-dev
はそれのサンドボックスバージョンを構築するの偉大な仕事をしていません - しかし、私は私のワークフローの一部とのトラブル...私は、スクリプトを持っている"cabal-dev ghci"を非サンドボックス非グローバル(user?)パッケージで使用するにはどうすればよいですか?
、scratch.hs
、(前cabal-dev
を抱えています)試してみるとghci
にロードされます。 scratch.hs
の内容は、私が取り組んでいる機能に応じて時間とともに変化します。 scratch.hs
はライブラリコードベースの一部ではなく、私が作業している間は私の個人的なスクラッチスペースです。
ここで、私のサンドボックスをロードしてghci
セッションを取得するには、ちょうどcabal-dev ghci
にしてからscratch.hs
をロードしてください。問題はこれが私のユーザパッケージデータベースを除外しているということです(つまり設計上、賢明に)scratch.hs
は私のライブラリのbuild-depends
にないパッケージからモジュールを参照している場合(それは結局のところライブラリの一部ではありません)パッケージが表示されていない、と私は、次のようなエラーが出る:
scripts/scratch.hs:8:8:
Could not find module `Data.Aeson.Generic':
It is a member of the hidden package `aeson-0.3.2.11'.
Perhaps you need to add `aeson' to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
この場合には、
scratch.hs
は
Data.Aeson.Generic
をインポートしたい、
しかしaeson
マイライブラリのbuild-depends
(かなり適切)ではありませんが、はです私のユーザーパッケージデータベースにあります。
どうすればこの問題を回避できますか?私は、これらのカテゴリのいずれかで答えを想像することができますが、多分私が見逃しているカテゴリがあります。
方法(選択的)には
cabal-dev
によって作成されたサンドボックスと一緒に私のユーザーパッケージデータベースからパッケージを使用しています。 (たぶん私自身のcabal-dev ghci
スタイルスクリプトを転がしていますか?)問題がなくなるようにワークフローを改善する方法の提案。
私はちょうど世界的にパッケージをインストールすることができます知っているが、私は、このように私のグローバルパッケージデータベースを汚染するには消極的だ(とcabal-dev
が明示的にこれを阻止します)。
アドバイスをいただきありがとうございます。
私は...あなたができますか:ghci内からセットパッケージ? (あるいは、オプションの名前があなたのパッケージデータベースを選ぶのは何ですか?) –
*額を叩く* - なぜ私はそれを考えなかったのですか? はい、それは動作します - ありがとうございます。私はそれを '.ghci'に追加して、それが自動的に起こるようにすることさえできます。ありがとう、ダニエル! – gimboland
おっと、嘘をついてください。いいえ、それは動作しません。私のプロジェクトのテストスイートがaesonを使うので、私の.cabalファイルで参照されていたので、サンドボックスに持ち込まれましたが、暗黙のうちに 'cabal-dev ghci'によって読み込まれました。そのため私は '' set -package aeson''をロードする必要がありました。私がそれを削除した場合、実際には:set -package aeson'はユーザパッケージデータベースのバージョンをロードしません( ''パッケージには満足できません '')ので、私はどこから始めたのですか?このページは過去3時間で問題が解決したと考えています)。 – gimboland