Notepad ++在运行脚本时设置了错误的路径

时间:2013-12-07 00:11:30

标签: lua notepad++ windows-xp-sp3

我有一个简单的脚本,我想用require导入另一个脚本,但是当我从Notepad ++运行它时,我得到了通常需要生成的错误。

有趣的是,它在一小时前工作,从那时起我就没有重新启动计算机。

这些文件位于同一目录中,因此简单的文件名(没有.lua)可以正常工作。 (相对路径)

Lua运行脚本就好了。

这是我在记事本中输入的内容: cmd / k lua“$(FULL_CURRENT_PATH)”

早些时候我也遇到了Penlight的问题,也许有一些连接,所以这里是: 我试图要求“pl”,但它找不到模块。 (从SciTE开始,工作得很好) 我在Lua命令行中尝试过,它就像一个魅力。 在SciTE再次尝试,瞧它再次起作用。

我不知道导致其中任何一个的原因。

ps。:使用lfs模块和os.execute(“cd / d ... path ...”)无法正常工作

1 个答案:

答案 0 :(得分:1)

Lua正在LUA_PATH的文件夹中搜索所需的模块。在通过F5运行的脚本中,输入以下语句:

print('current path is:')
os.execute('cd')
require 'someModuleThatDoesntExist'

打印“working”forlder(Program Files / Notepad ++)后,它会尝试查找所需的模块并失败。回溯显示Lua查看了许多不同的文件夹,其中没有一个是包含FULL_CURRENT_PATH的文件夹,因此无法找到该模块。

您有多种选择:

  1. 将您的脚本放在其中一个列出的路径中
  2. 在您的环境中设置LUA_PATH以包含脚本所在的文件夹名称
  3. 从您的脚本更改package.path,以便它知道在哪里查找其他模块。你可以这样做:
    • 在F5中包含一个额外的参数,即CURRENT_DIRECTORY,并让你的脚本使用它的第一个命令行参数(CURRENT_DIRECTORY)将它添加到package.path
    • 在脚本启动时解析arg [0],获取包含脚本的文件夹,并扩展package.path
  4. 例如,使用#3,第一个选项,您将使用

    cmd /k lua "$(FULL_CURRENT_PATH)" "$(CURRENT_DIRECTORY)"
    

    在notepad ++和你的Lua模块中你会使用

    thisModuleDir = arg[1]
    package.path = thisModuleDir .. ";" .. package.path
    require 'yourmodule'