我在本地填充我的数据库,我希望使用所有应用程序的脚本将该数据转储到生产服务器。
我正在尝试编写一个可以执行此操作的脚本...
$ source path/to/venv && python manage.py dumpdata app1 > file1.json
$ source path/to/venv && python manage.py dumpdata app2 > file2.json
...etc
我使用fabric作为我的部署脚本,我认为将它合并到那里很好,但是本地'面料中的方法似乎无法做到这一点。运行命令,但IDK为什么。
我认为这可能与此有关......
本地目前无法同时打印和 捕获输出,如run / sudo。捕获kwarg允许你 根据需要在打印和捕获之间切换,默认为 假。 (http://docs.fabfile.org/en/latest/api/core/operations.html)
但我不确定
我尝试使用os.system n一个单独的python脚本,但是它也没有工作,它们都给了我同样的错误......
sh: 1: source: not found
我已经多次检查并仔细检查了路径,我似乎无法弄明白。你觉得怎么样?
答案 0 :(得分:2)
您的脚本在经典的sh shell下执行,而不是在bash下执行。 “source”是一个bash命令;经典导入命令是一个句点(如“.pathto / pyenv / bin / activate”)。或者你可以在脚本开头用#!/ bin / bash强制使用bash。
答案 1 :(得分:0)
因为'$ source'是无法执行的事情。我制作了一个shell脚本,将它放在一个目录中并执行该
source pathto/pyenv/bin/activate && python manage.py dumpdata quiz > data_dump/foo.json
source pathto/pyenv/bin/activate && python manage.py dumpdata main > data_dump/bar.json
source pathto/pyenv/bin/activate && python manage.py dumpdata study > data_dump/waz.json
然后在结构文件中......
def foobar():
local('/pathto/foo.sh')