2015-10-12 9 views
6

ローカルディレクトリにModuleName.jlというファイルがあります。私は、このファイルが有効なモジュールが含まれていると信じて:Julia 0.4がUbuntu上のローカルパスのモジュールを見つけられません

#!/usr/bin/env julia 
module ModuleName 
... 
end 

モジュールをロードしようとしているjulia -e "using ModuleName"私が取得:

ERROR: ArgumentError: ModuleName not found in path 
in require at ./loading.jl:233 
in process_options at ./client.jl:284 
in _start at ./client.jl:411 

すべてが右のローカルディレクトリにあるジュリア0.3.11で動作しますが、それはで失敗しますジュリア0.4.0。私は64bit Ubuntu 14.04を使用しています。これをどうすれば解決できますか?

+0

あなたの現在の作業ディレクトリは何ですか?あなたのモジュールはどこですか? 'using'は暗黙的に[' require']を呼び出します(http://docs.julialang.org/en/latest/stdlib/base/?highlight=require#Base.require)、 "ファイルを検索するときは、' 'require'' first look現在の作業ディレクトリにあります。それが理由かもしれません。 – Gnimuc

+0

@GnimucKey ModuleName.jlは私の作業ディレクトリにあります。そしてジュリア0.3.11はそれをうまく読み込みます。 – hombit

+0

@GnimucKeyジュリア0.4.0では 'require'は非推奨ですか? [requireのソースコード](https://github.com/JuliaLang/julia/blob/release-0.4/base/require.jl) 'using 'の実装はどこにありますか? – hombit

答えて

5

現在(v0.4.0)、usingは現在の作業ディレクトリでは表示されません。しかし、良いことは、#4600の問題が(v0.5.0より前に)実装されている限り、using .ModuleNameのようなものをCWDのモジュールをロードするために使用できることです。

この文書化されていないv0.3からv0.4への変更は、this commitが原因です。 usingをv0.3のように動作させたい場合。このlinefind_in_path(name)に変更し、変更されたソースコードからjuliaを再コンパイルすることができます。

1

using ModuleNameを呼び出すと、Juliaはすでに定義されているパスをLOAD_PATHで検索します。

julia>LOAD_PATH 
2-element Array{ByteString,1}: 
"C:\\Users\\AliReza\\AppData\\Local\\Julia-0.4.0\\local\\share\\julia\\site\\v0 
.4" 
"C:\\Users\\AliReza\\AppData\\Local\\Julia-0.4.0\\share\\julia\\site\\v0.4" 

そして、あなたの現在の作業ディレクトリは何ですか:

LOAD_PATH定数の内容を確認するには、単にそれを呼び出しますか?

julia> pwd() 
"C:\\Users\\AliReza\\AppData\\Local\\Julia-0.4.0" 

あなたは現在の位置に関連したファイルは、それがincludeが存在することができる場合:あなたはLOAD_PATH

julia> using LocalModule 
ERROR: ArgumentError: LocalModule not found in path 
in require at loading.jl:233 
には存在していないモジュールをロードしたい場合は

julia> include("missedModule.jl") 
ERROR: could not open file C:\Users\AliReza\AppData\Local\Julia-0.4.0\missedModu 
le.jl 
in include at boot.jl:261 
in include_from_node1 at loading.jl:304 

はあなたが別のエラーを取得します

LocalModule.jlがローカル作業ディレクトリにあるファイルで、usingでロードする場合は、現在のパスをにプッシュします、push!(LOAD_PATH, pwd())、LocalModuleを作業ディレクトリからusingでロードすることが可能になりました。

+0

私はUbuntu(0.4.0)とOS X(0.3.11)でLOAD_PATHをチェックしました。どちらにもローカルパスはありません。しかし、 '使用する'はOS Xで動作し、Ubuntuでは動作しません。 Juliaはこれらのバージョン間で動作を変更しましたか? – hombit

3

他の提案に加えて、Juliaロードパス(JULIA_LOAD_PATH)の環境変数にローカルディレクトリを含めることで成功しました。言い換えれば、とジュリアを実行している:あなたはいくつかのコードをdevelopignしている場合

JULIA_LOAD_PATH=. julia 
2

、これは私にとって最高の作品:あなたのパッケージ/モジュールフォルダのルートにmain.jlを作成します。それは

include("your-source.jl")

と多分また

include("your-tests.jl")

あなたがちょうどあなたのコンソールでのジュリアのセッションを開くことができ、「あなたの-source.jl」の作業が含まれており、ちょうどこのラインを送りますあなたがそれを試してみたいときはいつでも、端末に接続してください。 作業が完了したら、ロードパスにパッケージを追加できます。

関連する問題