cod*_*321 0 python django scripting
我可以在 shell 中导入 BASE_DIR 如下:
In [3]: from scriptcitymirror.settings import BASE_DIR
In [4]: BASE_DIR
Out[4]: '/home/cchilders/projects/django_practice/scriptcity_public'
Run Code Online (Sandbox Code Playgroud)
但是在为我编写应用程序的脚本中,我无法导入完全相同的内容:
#!/usr/bin/env python
import os, subprocess, sys, re, requests, time
from scriptcitymirror.settings import BASE_DIR
Run Code Online (Sandbox Code Playgroud)
爆炸为:
cchilders@cody_pc:~/projects/django_practice/scriptcity_public$ robots/app_writer.py
Traceback (most recent call last):
File "robots/app_writer.py", line 4, in <module>
from scriptcitymirror.settings import BASE_DIR
ImportError: No module named scriptcitymirror.settings
Run Code Online (Sandbox Code Playgroud)
我惊呆了。另外,我通常在主目录(带有 settings.py 的目录中的 urls.py 文件)中执行此操作的方法不起作用:
from django.conf import settings
settings.configure()
print settings.MEDIA_URL
Run Code Online (Sandbox Code Playgroud)
现在我丑陋的解决方法是调用CWD=os.getcwd()并要求脚本从主项目路径运行。我的文件夹如下图所示。如何在 django 项目中的任何地方正确获取 BASE_DIR?(但在这里,我想在不是应用程序的“机器人”中使用它们。在制作测试应用程序后导入也不起作用)。谢谢
首先,您不应该导入您的项目,settings因为它会丢失默认设置。因此,为了获得所有设置,您应该始终导入django.conf.settings.
其次,Django 文档说它django.conf.settings不是一个模块——它是一个对象。所以你不能导入个人设置。
# WRONG way (will not work)
from django.conf.settings import BASE_DIR
# CORRECT way
from django.conf import settings
base_dir = settings.BASE_DIR
Run Code Online (Sandbox Code Playgroud)
请参阅此页面:在 Python 代码中使用设置
| 归档时间: |
|
| 查看次数: |
2658 次 |
| 最近记录: |