2016-10-13 22 views
2

私はモジュールload_modbusを持っています。パッケージとはどのように動作する必要がありますか?

これは私がそれを必要とする方法である:私はそれを必要とする前に

driver_modbus = require "lua_plugin/load_modbus"; 

、私はこれらのコード行を持っている:

-- Include Paths 
package.path = package.path .. ";./usr/lua/?.lua;./usr/lua/lua_modules/?.lua"; 
package.cpath = package.cpath .. ";./lib/?.so;./usr/lib/?.so"; 

は、どのように今の仕事を必要としていますか? 私は要求したパス(lua_plugin/load_modbus)をとり、?の代わりに置きますか?

./usr/lua/lua_plugin/load_modbus.lua; 
./usr/lua/lua_modules/lua_plugin/load_modbus.lua 

./lib/lua_plugin/load_modbus.so; 
./usr/lib/lua_plugin/load_modbus.so 

私は正しいだかどう誰かが私に言うことができる場合、それはいいだろう:

は、私はそれがこれらのファイルを検索することを修正しています。それがどのように機能するかを理解しようとする。

+2

'require" foo "' Luaがモジュールを検索したディレクトリの完全なリストを含むエラーメッセージが表示されます。 –

+0

しかし、 '?'が私が要求したものに置き換えられるのは間違いないでしょうか? (lua_plugin/load_modbus) – Black

+1

https://www.lua.org/pil/8.1.html – hjpotter92

答えて

2

短い答え:はい。

必須ではありませんパスを与えると仮定し、テンプレート。これは、実際のファイルシステムを持たないシステムでluaを使用できるためです。あなたが "/include/?lua"のような文字列を与え、 "test"を必要とするなら "?"を置き換えます。あなたが必要とする文字列で "/include/test.lua"を読み込みます。

ほとんどの場合、検索するパスは正確ですが、package.path = package.path .. <something>を標準の検索パスに追加するだけで、そのパスだけでなく他のすべてのパスも検索されることに注意してください。あなたはだけ一つの経路を検索したい場合は、あなたはそれを読んで考えてみましょうhttp://lua.org/manual/5.3

package.path = <your search path>

はこの上でいくつかのより多くの情報はありませんする必要があると思います。また、あなたが既にそれを知らなかった場合には、それがrequireコールの結果をルアにキャッシュするのも興味深いかもしれません。

+0

偉大な答え、ありがとう! – Black

関連する問題