gpt4 book ai didi

django - 为什么 Fabric fabfile 看不到 Django 设置?

转载 作者:行者123 更新时间:2023-12-03 04:21:40 24 4
gpt4 key购买 nike

我有一个最小的 Django 项目,其中包含一个 fabfile,它只是尝试显示 Django 设置:

# fabfile.py
from fabric.api import *
from fabric.contrib import django

django.settings_module('conf.settings')
from django.conf import settings

def set():
print settings.DEBUG

当我在本地主机上运行激活虚拟环境“venv”时,转到项目目录“/www/django/testfab/”并运行命令“fab set”,出现此错误:

Traceback (most recent call last):
File "/Users/smith/venv/django18/lib/python2.7/site-packages/fabric/main.py", line 743, in main
*args, **kwargs
File "/Users/smith/venv/django18/lib/python2.7/site-packages/fabric/tasks.py", line 427, in execute
results['<local-only>'] = task.run(*args, **new_kwargs)
File "/Users/smith/venv/django18/lib/python2.7/site-packages/fabric/tasks.py", line 174, in run
return self.wrapped(*args, **kwargs)
File "/www/django/testfab/fabfile.py", line 8, in set
print settings.DEBUG
File "/Users/smith/venv/django18/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
self._setup(name)
File "/Users/smith/venv/django18/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
self._wrapped = Settings(settings_module)
File "/Users/smith/venv/django18/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named conf.settings

我的settings.py 文件位于我的/www/django/testfab/conf 目录中:

.
├── conf
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── fabfile.py
├── fabfile.pyc
└── manage.py

我的 DJANGO_SETTINGS_MODULE 环境变量设置为“conf.settings”。

为什么 Fabric 看不到我的 settings.py 文件?我正在关注Django Integration说明如 Fabric 文档中所示。

谢谢!

解决方案

正如 Sean Hayes 在下面指出的,这是一个 Fabric issue 。以下是解决这个问题的方法:

django.settings_module('conf.settings')
from django.conf import settings
_ = settings.INSTALLED_APPS

最佳答案

您在哪个目录运行fab?除非 /www/django/testfab/ 位于 Python 路径上,否则 conf 不会被识别为 Python 模块。从该目录运行 fabpython./manage.py 会在该命令执行期间将其添加到 Python 路径。

也有可能 conf.settings 引发了它自己的 ImportError

关于django - 为什么 Fabric fabfile 看不到 Django 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35234752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com