./manage.py shell> update_db.py删除文件的内容

时间:2018-02-04 17:18:47

标签: python django

在我的Django项目中,我有几种方法可以不时地手动调用以进行测试,但最近发生了一些奇怪的事情。每当我尝试在我的Django应用程序的上下文中运行一个函数时:

./manage.py shell > scraper/update_db.py

它会覆盖" update_db.py"的内容。有了这个:

>>>

我尝试使用简单的print语句创建任意python文件,但所有这些都发生了同样的情况。我当前的update_db.py如下所示:

def consistency_check():
    # removed my code with print statement
    print('Hello')

consistency_check()

任何想法发生了什么?我想值得一提的是我在Pycharm工作,当我在python控制台中导入我的函数时,它在那里工作得很好:

from scraper import update_db
update_db.consistency_check()
# Runs smoothly

更新 manage.py的内容

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Enigma.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

1 个答案:

答案 0 :(得分:3)

./manage.py shell > scraper/update_db.py

当您执行此命令直接使用diple引用该文件时,您正在做的是将命令“./manage.py shell”的输出分配给文件“scraper / update_db.py”,这就是为什么您的代码被替换

对于您想要做的事情,您应该执行以下操作:

./manage.py shell < scraper/update_db.py

<强>更新

评论:我希望你想要&lt;而不是&gt;作者@Daniel Roseman