diff --git a/generator/pygen/example.py b/generator/pygen/example.py
index 8d921fd48c..5043bcadf6 100644
--- a/generator/pygen/example.py
+++ b/generator/pygen/example.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import argparse
 import os
 import timeit
diff --git a/generator/pygen/setup.py b/generator/pygen/setup.py
index 5a73fd1ebe..aabfb77d6d 100644
--- a/generator/pygen/setup.py
+++ b/generator/pygen/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import os
 import sys
diff --git a/kml/pykmlib/setup.py b/kml/pykmlib/setup.py
index 16305bf0c9..6bf3895ee1 100644
--- a/kml/pykmlib/setup.py
+++ b/kml/pykmlib/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import os
 import sys
diff --git a/pyhelpers/setup.py b/pyhelpers/setup.py
index e99f297b42..72dd6ece57 100644
--- a/pyhelpers/setup.py
+++ b/pyhelpers/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import inspect
 import linecache
diff --git a/search/pysearch/setup.py b/search/pysearch/setup.py
index 630efdfd99..1041dbc0b3 100644
--- a/search/pysearch/setup.py
+++ b/search/pysearch/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import os
 import sys
diff --git a/tools/download_statistics/aggregator.py b/tools/download_statistics/aggregator.py
index 7b23b7b089..5c6415b5da 100755
--- a/tools/download_statistics/aggregator.py
+++ b/tools/download_statistics/aggregator.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #coding: utf-8
 
 from collections import defaultdict
diff --git a/tools/download_statistics/resolver.py b/tools/download_statistics/resolver.py
index 57e2e37835..41a16d59f5 100755
--- a/tools/download_statistics/resolver.py
+++ b/tools/download_statistics/resolver.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 #coding: utf-8
 
 import geoip2.database
diff --git a/tools/python/InstrumentsTraceParser.py b/tools/python/InstrumentsTraceParser.py
index 8a2ff7afdd..57b79fde81 100755
--- a/tools/python/InstrumentsTraceParser.py
+++ b/tools/python/InstrumentsTraceParser.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.7
+#!/usr/bin/env python3
 
 from __future__ import print_function
 import struct
diff --git a/tools/python/airmaps/setup.py b/tools/python/airmaps/setup.py
index 13727108b5..9a0b11b12c 100755
--- a/tools/python/airmaps/setup.py
+++ b/tools/python/airmaps/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/booking_hotels_quality.py b/tools/python/booking_hotels_quality.py
index 7f7107c9c7..d5b06e1207 100755
--- a/tools/python/booking_hotels_quality.py
+++ b/tools/python/booking_hotels_quality.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # coding: utf8
 from __future__ import print_function
 
diff --git a/tools/python/categories_converter.py b/tools/python/categories_converter.py
index 5c6a810382..e1f6dedf58 100755
--- a/tools/python/categories_converter.py
+++ b/tools/python/categories_converter.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.7
+#!/usr/bin/env python3
 #coding: utf8
 from __future__ import print_function
 
diff --git a/tools/python/convert_strings.py b/tools/python/convert_strings.py
index 69d3455666..8e85bc4090 100755
--- a/tools/python/convert_strings.py
+++ b/tools/python/convert_strings.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import argparse
 import csv
 import sys
diff --git a/tools/python/data/all/setup.py b/tools/python/data/all/setup.py
index e6b28948c6..af7b6aaccf 100755
--- a/tools/python/data/all/setup.py
+++ b/tools/python/data/all/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/data/borders/setup.py b/tools/python/data/borders/setup.py
index c0e41f3327..5db38a7628 100755
--- a/tools/python/data/borders/setup.py
+++ b/tools/python/data/borders/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 import tarfile
diff --git a/tools/python/data/essential/setup.py b/tools/python/data/essential/setup.py
index 0ab4b51ca7..8521d1792c 100755
--- a/tools/python/data/essential/setup.py
+++ b/tools/python/data/essential/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/data/fonts/setup.py b/tools/python/data/fonts/setup.py
index 3f352673c5..0b66bbee8c 100755
--- a/tools/python/data/fonts/setup.py
+++ b/tools/python/data/fonts/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/data/styles/setup.py b/tools/python/data/styles/setup.py
index 083f161fe6..74e4c0b875 100755
--- a/tools/python/data/styles/setup.py
+++ b/tools/python/data/styles/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/data_files/setup.py b/tools/python/data_files/setup.py
index f5c4c84509..713d1b121b 100644
--- a/tools/python/data_files/setup.py
+++ b/tools/python/data_files/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/descriptions/setup.py b/tools/python/descriptions/setup.py
index 196d1117fb..78c4a6d9d3 100755
--- a/tools/python/descriptions/setup.py
+++ b/tools/python/descriptions/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/generate_styles_override.py b/tools/python/generate_styles_override.py
index b213d7883c..399ce3b6ca 100755
--- a/tools/python/generate_styles_override.py
+++ b/tools/python/generate_styles_override.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import sys
 import os
diff --git a/tools/python/maps_generator/setup.py b/tools/python/maps_generator/setup.py
index 27fc2a046f..31898cc291 100755
--- a/tools/python/maps_generator/setup.py
+++ b/tools/python/maps_generator/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/mwm/setup.py b/tools/python/mwm/setup.py
index 9e7992db42..45d9525106 100755
--- a/tools/python/mwm/setup.py
+++ b/tools/python/mwm/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/opentable_restaurants.py b/tools/python/opentable_restaurants.py
index c0fd84d030..514669df61 100755
--- a/tools/python/opentable_restaurants.py
+++ b/tools/python/opentable_restaurants.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python2.7
+#!/usr/bin/env python3
 # coding: utf-8
 
 from __future__ import print_function
diff --git a/tools/python/po_parser.py b/tools/python/po_parser.py
index 5b03f3c078..0b25434cfe 100755
--- a/tools/python/po_parser.py
+++ b/tools/python/po_parser.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2.7
+#!/usr/bin/env python3
 #coding: utf8
 from __future__ import print_function
 
diff --git a/tools/python/post_generation/setup.py b/tools/python/post_generation/setup.py
index 09edc81dd4..a23a8efcfd 100644
--- a/tools/python/post_generation/setup.py
+++ b/tools/python/post_generation/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 import os
 import sys
 
diff --git a/tools/python/road_runner.py b/tools/python/road_runner.py
index 12569f6d22..7fb60395dd 100644
--- a/tools/python/road_runner.py
+++ b/tools/python/road_runner.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 
 import os, sys, json
diff --git a/tools/python/stylesheet/cat_stat.py b/tools/python/stylesheet/cat_stat.py
index da1d9f8055..bec5f44bb3 100755
--- a/tools/python/stylesheet/cat_stat.py
+++ b/tools/python/stylesheet/cat_stat.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 """
 First lists tags used by Organic Maps
diff --git a/tools/python/stylesheet/drules_dump.py b/tools/python/stylesheet/drules_dump.py
index daf431a89e..529275aa34 100755
--- a/tools/python/stylesheet/drules_dump.py
+++ b/tools/python/stylesheet/drules_dump.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 # Dumps hashes of protobuffed drules
 import sys, re
 import itertools
diff --git a/tools/python/stylesheet/drules_to_mapcss.py b/tools/python/stylesheet/drules_to_mapcss.py
index eee2922eb7..3a3787f9fb 100644
--- a/tools/python/stylesheet/drules_to_mapcss.py
+++ b/tools/python/stylesheet/drules_to_mapcss.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import csv
 import os
diff --git a/tools/python/taxi_csv_to_json.py b/tools/python/taxi_csv_to_json.py
index 8e75e91d21..74734fbbe1 100644
--- a/tools/python/taxi_csv_to_json.py
+++ b/tools/python/taxi_csv_to_json.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # coding: utf8
 
 from argparse import ArgumentParser
diff --git a/tools/python/testlog_to_xml_converter.py b/tools/python/testlog_to_xml_converter.py
index 88831b42ac..441d17f42b 100755
--- a/tools/python/testlog_to_xml_converter.py
+++ b/tools/python/testlog_to_xml_converter.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 '''
 This script generates jUnit-style xml files from the log written by our tests.
diff --git a/tools/python/tts_languages.py b/tools/python/tts_languages.py
index 709d810a66..c3fa317ec5 100755
--- a/tools/python/tts_languages.py
+++ b/tools/python/tts_languages.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 from __future__ import print_function
 from optparse import OptionParser
 import re
diff --git a/tools/python_tests/permissions_test.py b/tools/python_tests/permissions_test.py
index bcabaeaaef..9706099d91 100755
--- a/tools/python_tests/permissions_test.py
+++ b/tools/python_tests/permissions_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 
 import logging
 import re
diff --git a/tools/unix/diff_features.py b/tools/unix/diff_features.py
index df226c4d11..c97c804d2b 100755
--- a/tools/unix/diff_features.py
+++ b/tools/unix/diff_features.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 import sys, re
 
 RE_STAT = re.compile(r'(?:\d+\. )?([\w:|-]+?)\|: size = (\d+); count = (\d+); length = ([0-9.e+-]+) m; area = ([0-9.e+-]+) m.\s*')
diff --git a/tools/unix/diff_size.py b/tools/unix/diff_size.py
index 20bf48091b..848fe2aac4 100755
--- a/tools/unix/diff_size.py
+++ b/tools/unix/diff_size.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
 import os, sys
 
 if len(sys.argv) < 3:
diff --git a/tracking/pytracking/setup.py b/tracking/pytracking/setup.py
index d2486e57e4..ef7c9543d6 100644
--- a/tracking/pytracking/setup.py
+++ b/tracking/pytracking/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import os
 import sys
diff --git a/traffic/pytraffic/setup.py b/traffic/pytraffic/setup.py
index d65760f1b8..dbcbaca12b 100644
--- a/traffic/pytraffic/setup.py
+++ b/traffic/pytraffic/setup.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # -*- coding: utf-8 -*-
 import os
 import sys