【问题标题】:django-extensions: Run a script using runscript which is inside a folder within scriptsdjango-extensions:使用脚本中文件夹内的 runscript 运行脚本
【发布时间】:2015-11-01 20:36:47
【问题描述】:

我在使用 django-extensions 中包含的 runscript 命令运行位于 scripts 文件夹内的文件夹内的脚本时遇到问题。

我项目中的文件夹结构是这样的:

-apps
-scripts
    -syllabus
        -first.py
    -second.py

文件 first.py 和 second.py 是相同的。

它具有django-extension runscript命令所需的运行功能。

def run(*args):
    # my function call for the script.

我已经很好地放置了 init.py,我可以从命令中运行 second.py:

./manage.py runscript second --script-args=excel.xlsx

但不知何故,我无法从 runscript 命令运行 first.py 文件。使用此命令:

./manage.py runscript first --script-args=excel.xlsx

我明白了

No (valid) module for script 'first' found Try running with a higher verbosity level like: -v2 or -v3

我什至尝试以更高的详细级别运行,最后添加-v2-v3。但是得到了这个错误:

No (valid) module for script 'first' found

我知道我遗漏了一些简单的东西,有人可以帮我吗?

【问题讨论】:

    标签: python django run-script django-extensions


    【解决方案1】:

    您需要按如下方式运行脚本:

    /manage.py runscript scripts.syllabus.first --script-args=excel.xlsx
    

    这里的scripts和syllabus是两个包含__init__.py的目录。

    【讨论】:

      【解决方案2】:

      我对 django 没有任何经验。但是可以通过在模块查找路径中添加syllabus 来解决问题。为此,在scripts 目录下的__init__.py 文件中添加以下代码。

      import sys
      import os
      
      curr_path = os.path.dirname(os.path.realpath(__file__))
      sys.path.insert(0, curr_path + '/syllabus')
      

      或者另一种方法是告诉 python syllabus 本身就是一个模块。在这种情况下,您只需将first.py 重命名为__init__.py。然后,您必须将其调用为

      ./manage.py runscript syllabus --script-args=excel.xlsx
      

      【讨论】:

      • 第一个解决方案不起作用。但第二个奏效了。第二种解决方案的问题是我在 syllabus 文件夹中有多个脚本。因此,每次运行脚本时,我都需要更改一些内容。
      猜你喜欢
      • 2017-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 2018-12-13
      相关资源
      最近更新 更多