diff --git a/lib/py/src/TSCons.py b/lib/py/src/TSCons.py
index bc67d70..633f67a 100644
--- a/lib/py/src/TSCons.py
+++ b/lib/py/src/TSCons.py
@@ -19,7 +19,6 @@
 
 from os import path
 from SCons.Builder import Builder
-from six.moves import map
 
 
 def scons_env(env, add=''):
diff --git a/lib/py/src/protocol/TProtocol.py b/lib/py/src/protocol/TProtocol.py
index 339a283..bac54ae 100644
--- a/lib/py/src/protocol/TProtocol.py
+++ b/lib/py/src/protocol/TProtocol.py
@@ -21,10 +21,8 @@
 from thrift.transport.TTransport import TTransportException
 from ..compat import binary_to_str, str_to_binary
 
-import six
 import sys
 from itertools import islice
-from six.moves import zip
 
 
 class TProtocolException(TException):
@@ -373,8 +371,8 @@
     def writeContainerMap(self, val, spec):
         ktype, kspec, vtype, vspec, _ = spec
         self.writeMapBegin(ktype, vtype, len(val))
-        for _ in zip(self._write_by_ttype(ktype, six.iterkeys(val), spec, kspec),
-                     self._write_by_ttype(vtype, six.itervalues(val), spec, vspec)):
+        for _ in zip(self._write_by_ttype(ktype, val.keys(), spec, kspec),
+                     self._write_by_ttype(vtype, val.values(), spec, vspec)):
             pass
         self.writeMapEnd()
 
diff --git a/lib/py/src/server/THttpServer.py b/lib/py/src/server/THttpServer.py
index 47e817d..21f2c86 100644
--- a/lib/py/src/server/THttpServer.py
+++ b/lib/py/src/server/THttpServer.py
@@ -19,7 +19,7 @@
 
 import ssl
 
-from six.moves import BaseHTTPServer
+import http.server as BaseHTTPServer
 
 from thrift.Thrift import TMessageType
 from thrift.server import TServer
diff --git a/lib/py/src/server/TNonblockingServer.py b/lib/py/src/server/TNonblockingServer.py
index 7694760..a7a40ca 100644
--- a/lib/py/src/server/TNonblockingServer.py
+++ b/lib/py/src/server/TNonblockingServer.py
@@ -32,7 +32,7 @@
 import threading
 
 from collections import deque
-from six.moves import queue
+import queue
 
 from thrift.transport import TTransport
 from thrift.protocol.TBinaryProtocol import TBinaryProtocolFactory
diff --git a/lib/py/src/server/TServer.py b/lib/py/src/server/TServer.py
index 8b2f938..81144f1 100644
--- a/lib/py/src/server/TServer.py
+++ b/lib/py/src/server/TServer.py
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-from six.moves import queue
+import queue
 import logging
 import os
 import threading
diff --git a/lib/py/src/transport/THttpClient.py b/lib/py/src/transport/THttpClient.py
index 82ca3d1..d545ce5 100644
--- a/lib/py/src/transport/THttpClient.py
+++ b/lib/py/src/transport/THttpClient.py
@@ -24,11 +24,11 @@
 import warnings
 import base64
 
-from six.moves import urllib
-from six.moves import http_client
+import urllib.parse
+import urllib.request
+import http.client
 
 from .TTransport import TTransportBase
-import six
 
 
 class THttpClient(TTransportBase):
@@ -60,9 +60,9 @@
             self.scheme = parsed.scheme
             assert self.scheme in ('http', 'https')
             if self.scheme == 'http':
-                self.port = parsed.port or http_client.HTTP_PORT
+                self.port = parsed.port or http.client.HTTP_PORT
             elif self.scheme == 'https':
-                self.port = parsed.port or http_client.HTTPS_PORT
+                self.port = parsed.port or http.client.HTTPS_PORT
                 self.certfile = cert_file
                 self.keyfile = key_file
                 self.context = ssl.create_default_context(cafile=cafile) if (cafile and not ssl_context) else ssl_context
@@ -107,10 +107,10 @@
 
     def open(self):
         if self.scheme == 'http':
-            self.__http = http_client.HTTPConnection(self.host, self.port,
+            self.__http = http.client.HTTPConnection(self.host, self.port,
                                                      timeout=self.__timeout)
         elif self.scheme == 'https':
-            self.__http = http_client.HTTPSConnection(self.host, self.port,
+            self.__http = http.client.HTTPSConnection(self.host, self.port,
                                                       key_file=self.keyfile,
                                                       cert_file=self.certfile,
                                                       timeout=self.__timeout,
@@ -173,7 +173,7 @@
             self.__http.putheader('User-Agent', user_agent)
 
         if self.__custom_headers:
-            for key, val in six.iteritems(self.__custom_headers):
+            for key, val in self.__custom_headers.items():
                 self.__http.putheader(key, val)
 
         # Saves the cookie sent by the server in the previous response.
