tôi ở đây Python 3.6
được sử dụng trong ứng dụng [địa lý][1]
, tôi phải sử dụng Chạy nó trên máy lỗi thời với Windows 2012 Server
. Sự cố xảy ra khi một ứng dụng gọi thư viện này trên máy chủ này vì nó trả về lỗi sau:
Tệp "C:\ServAPI\Util.py", dòng 12, trong getLocation
vị trí = geolocator.geocode(name)
Tệp "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\geopy\geocers\osm.py", dòng 193, trong mã địa lý
self._call_geocoding(url, timeout=timeout), chính xác_one
Tệp "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\geopy\geocers\base.py", dòng 171, trong _call_geocoding
nâng cao GeocodingServiceError(tin nhắn)
geopy.exc.GeocodingServiceError: [SSL: CERTIFICATE_VERIFY_FAILED] xác minh chứng chỉ không thành công (_ssl.c:748)
Làm thế nào tôi có thể giải quyết vấn đề này? tôi ở đây Máy chủ Windows 2012
chạy tiếp
Python 3.6.0
gia hạn
Tiếp theo là mã:
từ geopy.geocologists nhập Nominatim
từ nhập geopy.exc GeocodeTimedOut
def getLocation(name):
công cụ định vị địa lý = Nominatim()
thử:
vị trí = geolocator.geocode(name, timeout=5)
địa điểm trả về
ngoại trừ GeocodingTimedOut là e:
print("Lỗi: mã địa lý không thành công khi nhập %s với thông báo %s" % (e.msg))
Tôi gặp vấn đề tương tự nhưng cuối cùng cũng phải cài đặt SSL và Certifi. Tôi không chắc có ai gặp phải vấn đề này không, nhưng nếu có thì đây là cách tôi giải quyết.
Trước tiên hãy cài đặt gói Certifi và SSL, sau đó
giấy chứng nhận nhập khẩu
nhập khẩu ssl
nhập geopy.geocologists
từ geopy.geocologists nhập Nominatim
ctx = ssl.create_default_context(cafile=certifi.where())
geopy.geoculators.options.default_ssl_context = ctx
công cụ định vị địa lý = Nominatim(sơ đồ='http')
vị trí = geolocator.reverse("48.8588443, 2.2943506")
in(location.address)
in(location.raw)
Vì vậy, kết quả là:
Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, Pháp métropolitaine, 75007, Pháp
{'place_id': '62005962', 'licence': 'Dữ liệu © người đóng góp OpenStreetMap, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': '5013364', ' lat': '48.8582602', 'lon': '2.29449905431968', 'display_name': 'Tour Eiffel, 5, Avenue Anatole France, Gros-Caillou, 7e, Paris, Île-de-France, France métropolitaine, 75007, Pháp', 'địa chỉ': {'attraction': ' Tham quan Eiffel', 'house_number': '5', 'người đi bộ': 'Đại lộ Anatole Pháp', 'ngoại ô': 'Gros-Caillou', 'city_district': '7e', 'city': 'Paris', 'quận': 'Paris', 'state': 'Île-de-France ', 'quốc gia': 'Pháp', 'mã bưu điện': '75007', 'country_code': 'fr'}, 'boundingbox': ['48.8574753', '48.8590465', '2.2933084', '2.2956897']}
Tôi là một lập trình viên xuất sắc, rất giỏi!