【问题标题】:Importing different Django projects settings导入不同的 Django 项目设置
【发布时间】:2014-10-20 05:12:46
【问题描述】:

我正在尝试从同一个 python 模块导入不同的 Django 项目 settings 文件。

project_path = ["/home/Desktop/test1", "/home/Desktop/test2", "/home/Desktop/test3"]
for j, i in enumerate(project_path):
    if os.path.exists(i):
        sys.path.append(i)
        os.system("fm -rf " + project_path[j - 1] + "/settings.pyc")
        import settings
        print "settings file path>>>", settings.__file__
        project_directory = os.path.dirname(settings.__file__)
        print "Application direcotry>>>", project_directory
        project_name = os.path.basename(project_directory)
        print "Application name>>>", project_name
        sys.path.append(os.path.join(project_directory, '..'))
        project_module = __import__(project_name, '', '', [''])
        # Set DJANGO_SETTINGS_MODULE appropriately.
        sys.path.remove(i)

我得到以下结果:

settings file path>>> home/Desktop/test1/settings.pyc
Application direcotry>>> home/Desktop/test1
Application name>>> test1
settings file path>>> home/Desktop/test1/settings.pyc
Application direcotry>>> home/Desktop/test1
Application name>>> test1
settings file path>>> home/Desktop/test1/settings.pyc
Application direcotry>>> home/Desktop/test1
Application name>>> test1

我的问题是,即使我正在删除项目路径并添加新路径,它也正在导入相同的应用程序路径。所以我无法导入下一个应用程序路径。

我什至尝试重新加载设置文件。

import settings
settings = reload(settings) 

【问题讨论】:

  • 你把这个导入python模块放在哪里了?在 'home/Desktop/test1' 的文件夹下?
  • 脚本模块不在“/tmp”目录下
  • 对我来说看起来像是 xy 问题 (xyproblem.info)。愿意解释一下您为什么要这样做吗?
  • 我正在尝试通过一个脚本更改我的不同应用程序的所有用户的密码。所有用户的密码都相同。我正在导入设置,因为我想导入用户表来更改每个用户的密码。

标签: python django import settings


【解决方案1】:

尝试使用包名导入并注释不相关的行。 确保文件夹 test1/test2/test3 首先是包。如果没有,请在文件夹中添加__init__.py

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import sys

project_path = ["/home/Desktop/test1", "/home/Desktop/test2", "/home/Desktop/test3"]

for path in project_path:

    sys.path.append(path)
    package_name = path.split('/')[2]

    cmd = 'import ' + package_name + '.settings'
    sys.path.remove(path)  

【讨论】:

  • 但是为什么它会在第一次迭代中起作用,因为您最后执行了导入设置命令。
  • @TanveerAlam 你的路径中没有 settings.py 吗?
  • 不,我在 sys 路径中附加了项目目录路径,其中 settings.py 存在并且我正在尝试导入它。
  • @TanveerAlam 检查我的更新。您不必每次都删除 pyc 文件。
  • @ m170897017 获取“ImportError: No module named test1.settings”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2011-06-01
  • 1970-01-01
相关资源
最近更新 更多