module'对象没有属性'OSMGeoAdmin

4 投票
3 回答
3357 浏览
提问于 2025-04-17 11:19

环境设置如下:

**Windows 7**
PATH=C:\Python27\;C:\Python27\Scripts;C:\Python27\Lib\site-packages\MySQLdb;C:\Program       Files\MySQL\MySQL Server 5.5\bin;C:\OSGeo4W\bin
**python 2.7**
'C:\\Python27\\lib\\site-packages\\bitstring-2.1.1-py2.7.egg',      'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\virtualenvwrapper-2.11.1-py2.7.egg', 'c:\\cygwin\\home\\username\\__prjs\\flt\\requirements\\src\\djangoembed', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\PIL', 'C:\\Python27\\lib\\site-packages\\win32', 'C:\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info'

我找到的几个答案让我检查我的GDAL安装和路径,但它们都是正确的,如下所示:

set OSGEO4W_ROOT=C:\OSGeo4W
set GEOS_LIBRARY_PATH=%OSGEO4W_ROOT%\bin
set GDAL_DATA=%OSGEO4W_ROOT%\share\gdal

哦!还有一点就是,当我在Python中尝试调用admin.py时

>>> import django.contrib.gis
>>> import admin
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named admin

我正在为一个非营利项目工作,帮忙的人不多,但工作量很大,所以任何建议都非常感谢。

根据Rob Wouters的回答,我找到了根本原因的错误。

>>> import django.contrib.gis.admin
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\django\contrib\gis\admin\__init__.py", line 2, in <module>
    from django.contrib.admin import autodiscover, site, AdminSite, ModelAdmin, StackedInline, TabularInline, HORIZONTAL, VERTICAL
  File "C:\Python27\lib\site-packages\django\contrib\admin\__init__.py", line 3, in <module>
    from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
  File "C:\Python27\lib\site-packages\django\contrib\admin\helpers.py", line 3, in <module>
    from django.contrib.admin.util import (flatten_fieldsets, lookup_field,
  File "C:\Python27\lib\site-packages\django\contrib\admin\util.py", line 1, in <module>
    from django.db import models
  File "C:\Python27\lib\site-packages\django\db\__init__.py", line 14, in <module>
    if not settings.DATABASES:
  File "C:\Python27\lib\site-packages\django\utils\functional.py", line 276, in __getattr__
    self._setup()
  File "C:\Python27\lib\site-packages\django\conf\__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

我会研究一下Django_settings,任何有用的信息我都会分享。

虚拟环境的路径如下:

(ve) C:\cygwin\home\holanda\__prjs\ourfield>env
!::=::\
!C:=C:\cygwin\home\holanda\__prjs\ourfield
.
.
.
DJANGO_SETTINGS_MODULE=ourfield.settings
.
.
.
GDAL_DATA=C:\OSGeo4W\share\gdal
GEOS_LIBRARY_PATH=C:\OSGeo4W\bin
GEOTIFF_CSV=C:\OSGeo4W\share\epsg_csv
.
.
.
HOME=/cygdrive/c/Users/holanda
HOMEDRIVE=C:
HOMEPATH=\Users\holanda
JAVA_HOME=C:\OSGeo4W\
.
.
.
OSGEO4W_ROOT=C:\OSGeo4W
PATH=/home/holanda/__prjs/ourfield/ve/Scripts:/cygdrive/c/Python27:/cygdrive/c/Python27/Scripts:/usr/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/cygdrive/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x86)/Common Files/Acronis/SnapAPI:/cygdrive/c/_tech/_mysql/bin:/cygdrive/c/masters/Console2/bin/release:/cygdrive/c/Program Files/Java/jdk1.7.0/bin/bin:/cygdrive/c/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files (x86)/Microsoft SQL Server/100/DTS/Binn:/cygdrive/c/_tech/utils:/cygdrive/c/MinGW/bin:/cygdrive/c/Program Files (x86)/QuickTime/QTSystem:/cygdrive/c/Program Files (x86)/Windows Live/Shared:/cygdrive/c/Program Files (x86)/QuickTime/QTSystem:/cygdrive/c/Program Files/Git/cmd:/cygdrive/c/Python27/Lib/site-packages/MySQLdb:/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin:/cygdrive/c/OSGeo4W/bin:/cygdrive/c/Users/holanda/AppData/Roaming/Python/Scripts:/cygdrive/c/OSGeo4W/bin:/cygdrive/c/OSGeo4W/apps/msys/bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.py;.pyw
.
.
.
PROJECTS_ROOT=C:\cygwin\home\holanda\__prjs
PROJECT_NAME=ourfield
PROJECT_ROOT=C:\cygwin\home\holanda\__prjs\ourfield
PROJ_LIB=C:\OSGeo4W\share\proj
PROMPT=(ve) $P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
PYTHONPATH=C:\cygwin\home\holanda\__prjs;C:\cygwin\home\holanda\__prjs\ourfield;C:\cygwin\home\holanda\__prjs\ourfield\parts;C:\cygwin\home\holanda\__prjs\ourfield\apps;C:\cygwin\home\holanda\__prjs\ourfield\ve\Lib;C:\cygwin\home\holanda\__prjs\ourfield\ve\Lib\site-packages;C:\Python27;C:\Python27\Lib;C:\Python27\Lib\site-packages;C:\OSGeo4W\bin
PYTHONSTARTUP=~/.pythonrc
PYTHON_ROOT=C:\Python27
QTJAVA=C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip
QT_PLUGIN_PATH=C:\OSGeo4W\apps\Qt4\plugins
QT_RASTER_CLIP_LIMIT=4096
.
.
.
VBOX_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\
VIRTUAL_ENV=C:\cygwin\home\holanda\__prjs\ourfield\ve
VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
WINDIR=C:\Windows
.
.
.
TERM=cygwin

3 个回答

2

你需要在项目目录下运行 python manage.py shell,这样可以在你的命令行中加载一些与Django相关的变量,这样就能避免出现 ImportError 的错误。

编辑:

从批处理文件运行和从命令行运行是两回事,这就是你为什么会遇到这些错误的原因。

解决这个问题最简单的方法是创建一个 自定义管理命令,这样就可以避免所有这些问题。

3

我虽然晚了4年,但在升级到osx El Capitan和Homebrew后遇到了这个错误。我找到了一个解决办法,在这里可以查看。OSMGeoAdmin这个东西依赖于gdal,所以我在升级后需要重新安装它,方法是运行

brew install gdal

希望这对将来其他人也能有所帮助。

4

你需要引入 django.contrib.gis.admin,而不仅仅是 admin

撰写回答