72

自分のマシンに GeoDjango をインストールしようとしています。私は Python の初心者で、他のチーム メンバーにとってインストールが非常に難しいプロジェクトに参加しています。Brew を使用して Python 2.7 と GEOS をインストールし、PSQL 9.2.4 を実行しましたが、Web サーバーを実行しようとすると、このエラーが発生し続けます。

__import__(name)
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geometry/backend/geos.py", line 1, in <module>
from django.contrib.gis.geos import (
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geos/__init__.py", line 6, in <module>
from django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geos/geometry.py", line 14, in <module>
from django.contrib.gis.geos.coordseq import GEOSCoordSeq
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site-
packages/django/contrib/gis/geos/coordseq.py", line 9, in <module>
from django.contrib.gis.geos.libgeos import CS_PTR
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site-
packages/django/contrib/gis/geos/libgeos.py", line 119, in <module>
_verinfo = geos_version_info()
File "/Users/armynante/Desktop/uclass-files/uclass-env/lib/python2.7/site
packages/django/contrib/gis/geos/libgeos.py", line 115, in geos_version_info
if not m: raise GEOSException('Could not parse version info string "%s"' % ver)
django.contrib.gis.geos.error.GEOSException: Could not parse version info string
"3.4.2-CAPI-1.8.2 r3921"

SOまたはWebでこのトレースに関連するものを見つけることができないようです。正規表現の失敗かもしれないと思いますか?現在、PSQL と GEOS を再インストールして、実行できるかどうかを確認しようとしています。

ここに私の要件ファイルがあります:

django==1.4
psycopg2==2.4.4
py-bcrypt==0.4
python-memcached==1.48
south==0.7.3

# Debug Tools
sqlparse==0.1.3
django-debug-toolbar==0.9.1
django-devserver==0.3.1

# Deployment
fabric==1.4

# AWS
# boto==2.1.1
django-storages==1.1.4
django-ses==0.4.1

# ECL
http://packages.elmcitylabs.com/ecl_django-0.5.3.tar.gz#ecl_django
http://packages.elmcitylabs.com/ecl_google-0.2.14.tar.gz#ecl_google
# https://packages.elmcitylabs.com/ecl_tools-0.3.7.tar.gz#ecl_tools
# https://packages.elmcitylabs.com/chargemaster-0.2.19.tar.gz
# https://packages.elmcitylabs.com/ecl_facebook-0.3.12.tar.gz#ecl_facebook
# https://packages.elmcitylabs.com/ecl_twitter-0.3.3.tar.gz#ecl_twitter

# Search
#https://github.com/elmcitylabs/django-haystack/tarball/issue-522#django-haystack
-e git+https://github.com/toastdriven/django-haystack.git#egg=django-haystack

pysolr==2.1.0-beta
# whoosh==2.3.2

# Misc
# PIL
# django-shorturls==1.0.1
# suds==0.4

django-mptt
sorl-thumbnail

stripe
pytz==2013b
4

9 に答える 9

176

これが私の解決策です (明らかに、私の英語のように醜いですが、機能します)。問題は、RegEx では不要な空白がバージョン文字列に含まれていることです。

エラーは言う:

GEOSException: バージョン情報文字列 "3.4.2-CAPI-1.8.2 r3921" を解析できませんでした

そして geos_version_info は警告します:

正規表現は、「3.0.0rc4-CAPI-1.3.3」、「3.0.0-CAPI-1.4.1」、「3.4.0dev-CAPI-1.8.0」などのバージョン文字列を解析できる必要があります

このファイルを編集します: site-packages/django/contrib/gis/geos/libgeos.py

関数を探します: geos_version_info

そして、次の行を変更します。

ver = geos_version().decode()

この行で:

ver = geos_version().decode().split(' ')[0]

最後に空白がありますが、それ以上の情報が提供されないという別の問題もあります。そのようなバージョンもバージョンの正規表現と一致しないためstrip()、バージョンを -ping することで、簡単な修正として予期される動作になる可能性があります。私の例では、次のとおりでした。'3.8.0-CAPI-1.13.1 '

于 2013-09-10T14:28:06.880 に答える
5

以前に 3.6.1 をインストールしていない人向け:

  1. brew unlink geos
  2. で 3.6.1 をインストールしbrew install https://raw.githubusercontent.com/Homebrew/homebrew-core/145b22e8330e094ee148861e72e26c03e73d34a1/Formula/geos.rbます。
  3. brew info geosスター付きの 3.6.1 が表示されます。 ここに画像の説明を入力
于 2018-06-13T18:37:16.050 に答える
4

これは、昨年 3 月頃に Django で修正されたようです。Django バグ 20036も参照してください。したがって、Django 1.5.4 にアップグレードすると問題が解決します。

于 2013-09-30T22:16:51.580 に答える