【问题标题】:Importerror geopy for use in Postgresql用于 Postgresql 的 Importerror geopy
【发布时间】:2013-12-18 08:25:15
【问题描述】:

在 Python3.2.5 下安装 geopy-0.96.2 后,我得到以下信息: “导入错误:找不到模块 geopy。”运行下面的脚本时

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()

【问题讨论】:

    标签: postgresql python-3.x geopy


    【解决方案1】:

    我花了将近一天的时间尝试让 Python 的 geopy 地理编码模块与我的 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) 您现在应该可以在 postgressql 中测试 geopy

    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()
    

    这给了我以下答案:

    “Kungsgatan 20,诺尔马尔姆,瑞典斯德哥尔摩”

    如果您收到 Importerror no module found ,请务必通过运行以下命令检查您的安装是否包含上述路径:SELECT pyversion()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 2014-05-03
      • 2017-11-21
      • 2021-11-10
      相关资源
      最近更新 更多