django扩展:使用runscript运行一个位于scripts文件夹内的脚本。

3

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

我的项目中的文件夹结构如下:

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

文件 first.py 和 second.py 是一样的。

它有一个 run 函数,符合 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 尝试使用更高的详细程度,如:-v2或-v3 我甚至尝试使用 -v2-v3 选项来增加详细程度,但是仍然出现以下错误: No (valid) module for script 'first' found 我知道自己缺少一些简单的东西,有人能帮帮忙吗?
2个回答

8

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

/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

第一种解决方案没用。但是第二种解决方案有效。我对第二种解决方案的问题是我在课程文件夹内有多个脚本。所以每次运行脚本都需要改变某些东西。 - Santosh Ghimire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接