2017-06-15 2 views
2

を使用しますが、モジュールを作成し、次のように使用して適用する:使用して、私は動的モジュールを使用したいと私は自分の名前を知っている動的

using PyPlot 
a = Module(:Plots) 
using a 

がdefiniedされていないことを私に言っexcpetionが得られます。これは非常に直観的ではないエラーメッセージです。なぜなら、レプリケートでこれを行うと、後で 'a'を使うことができるからです。使用との組み合わせで、定義されていないことがわかります。あなたの代わりにusing Main.aまたはusing .aを使用する必要がありますので

答えて

3

エラーメッセージは、Base.requireによって放出される:

は、この機能は、/インポートを使用しての実装の一部である(モジュール::記号)

が必要ですモジュールがまだ でない場合、メインに定義されています。 に関係なく、ロード前にロードされているかどうか(たとえば、インタラクティブにライブラリを開発している場合など)にモジュールをリロードするよう直接呼び出すこともできます。 ... ファイルを検索する場合、最初のPkg.dir()の下で、パッケージコードを検索する必要が、その後、グローバル配列LOAD_PATHにパス をしようとします。 MacOSやWindowsのような大文字と小文字を区別しないファイルシステム を含むものを含め、すべてのプラットフォームで大文字と小文字を区別する必要があります。

それとも、その場でモジュールを定義するためにmoduleキーワードを使用します。

module A 
... 
end 

using A 

を既存のモジュールについて、あなたはまた、動的eval(using module-name)を経由して、それを使用することができます。

+0

ありがとうございます。評価はまさに私が望むものです。 – Nozdrum

+0

ここでは「評価」に注意してください。 REPLやプリコンパイルされていないパッケージでのみ、このように使用してください。プリコンパイルは、この種の動的使用のために設計されていません。したがって、パッケージを依存関係として持つ必要があるのをスキップする方法としてこれをやっているのであれば、そうしないでください。 (また、Plots.jlの依存関係をスキップする場合、パッケージはPlots.jlを直接使用する必要はなく、代わりにRecipesBase.jlに依存する必要があります)。 –

+0

@ChrisRackauckasもし、依存関係がまだ(コンパイル時に)何か分かっていなければ、どうすればいいのですか? – Nozdrum

関連する問題