當我花了差不多一天試圖讓geopy地理編碼模塊的Python和我的Postgres 9.3安裝發揮好。這是我如何解決它...
對PostgreSQL 9.3(Windows 8.1中)安裝Python3.2.5
1)通過下載的python-3.2.5.msi安裝Python3.2.5。 2)打開C:\ Python32 \ DLLs,將python3.dll複製到.... \ PostgreSQL \ 9.3 \ lib,並將其重命名爲python32.dll 3)打開控制面板 - >高級系統設置 - >環境變量找到PATH變量,如果添加路徑:C:\ Python32; C:\ Python32 \ Scripts 4)打開pgAdminIII並運行SQL查詢:CREATE EXTENSION plpython3u; 5)以下SQL查詢可以用來檢查安裝:
CREATE OR REPLACE FUNCTION pyversion() RETURNS text AS $$
import sys
return sys.version + '\n' + '\n'.join(sys.path)
$$ LANGUAGE plpython3u;
SELECT pyversion()
這將產生類似:
"3.2.5 (default, May 15 2013, 23:07:10) [MSC v.1500 64 bit (AMD64)]
C:\Python32\lib\site-packages\setuptools-2.0.1-py3.2.egg
C:\WINDOWS\SYSTEM32\python32.zip
C:\Python32\Lib
C:\Python32\DLLs
C:\Program Files\PostgreSQL\9.3\data
C:\Program Files\PostgreSQL\9 (...)"
在PostgreSQL 9.3(Windows 8.1中的Python3.2.5安裝geopy)
1) Download geopy-0.96.2.tar.gz from https://pypi.python.org/pypi/geopy
2) Unzip into any directory.
3) Open command prompt and go to this directory
4) run: python setup.py install
5) Open control panel -> Advanced system settings -> Environmental variables
Create new variable
PYTHONPATH = C:\Python32\Lib\site-packages;C:\Python32\Lib\site-package\geopy-0.96.2-py3.2.egg
6) Open pgAdminIII and run the SQL query:
DROP EXTENSION IF EXISTS plpython3u CASCADE;
CREATE EXTENSION plpython3u;
7) The following SQL query can be used to check the install:
CREATE OR REPLACE FUNCTION pyversion() RETURNS text AS $$
import sys
return sys.version + '\n' + '\n'.join(sys.path)
$$ LANGUAGE plpython3u;
SELECT pyversion()
現在這應該產生類似:
3.2.5 (default, May 15 2013, 23:07:10) [MSC v.1500 64 bit (AMD64)]
C:\Python32\lib\site-packages\setuptools-2.0.1-py3.2.egg
C:\Python32\lib\site-packages\geopy-0.96.2-py3.2.egg
C:\WINDOWS\SYSTEM32\python32.zip
C:\Python32\Lib
C:\Python32\DLLs
C:\Program Files\PostgreSQL\9.3\data
C:\Program Files\PostgreSQL\9.3\bin
C:\Python32
C:\Python32\lib\site-packages
8)你現在應該可以控制PostgreSQL
CREATE OR REPLACE FUNCTION geopy_test() RETURNS text AS $$
from geopy.geocoders import GoogleV3
geolocator = GoogleV3()
address, (latitude, longitude) = geolocator.geocode("Kungsgatan 20 Stockholm")
return address
$$ LANGUAGE plpython3u;
SELECT geopy_test()
這給了我下面的答案中測試geopy:
「國王街20,北城,斯德哥爾摩,瑞典」
如果你得到一個導入器錯誤,找不到模塊,一定要檢查你的安裝是否包含上面的路徑:SELECT pyversion()