在我的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)
答案 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