diff --git a/ckanext/odsh/validation.py b/ckanext/odsh/validation.py
index f52249b996d9debecd8f76a6e70c4729199204ae..fadf00882c513864d339a2f83ec76f8c5a1dcc87 100644
--- a/ckanext/odsh/validation.py
+++ b/ckanext/odsh/validation.py
@@ -1,6 +1,6 @@
 # This Python file uses the following encoding: utf-8
 import logging
-import unicodecsv as csv
+import csv
 import re
 import urllib.request, urllib.error, urllib.parse
 import json
@@ -214,24 +214,21 @@ def known_spatial_uri(key, data, errors, context):
                 data[('extras', new_index+1, 'value')] = poly
             return
 
-    mapping_file = tk.config.get('ckanext.odsh.spatial.mapping')
-    try:
-        mapping_file = urllib.request.urlopen(mapping_file)
-    except Exception:
-        raise Exception("Could not load spatial mapping file!")
+    mapping_path = tk.config.get('ckanext.odsh.spatial.mapping')
 
     not_found = True
     spatial_text = str()
     spatial = str()
-    cr = csv.reader(mapping_file, delimiter="\t", encoding='utf-8')
-    for row in cr:
+    with open(mapping_path, newline='') as mapping_file:
+      cr = csv.reader(mapping_file, delimiter="\t")
+      for row in cr:
         if row[0] == value:
             not_found = False
             spatial_text = row[1]
             loaded = json.loads(row[2])
             spatial = json.dumps(loaded['geometry'])
             break
-    if not_found:
+      if not_found:
         raise toolkit.Invalid(
             'spatial_uri: uri unknown')
 
diff --git a/dev-requirements.txt b/dev-requirements.txt
index c574e4eaf013c487e6c63e0048eb9132b71c2627..296c410ff10a01f5be261393623ad1b427c48a89 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -165,7 +165,6 @@ traceback2==1.4.0
 translationstring==1.3
 typing==3.6.4
 tzlocal==1.3
-unicodecsv==0.14.1
 unittest2==1.1.0
 urllib3==1.23
 vdm==0.13