diff --git a/src/ZEO/ServerStub.py b/src/ZEO/ServerStub.py
index cbdc2c012be205c97e2e0394b12281541d6bb35d..f9c461009a397d383a8d8212a049bbed2dfa09d2 100644
--- a/src/ZEO/ServerStub.py
+++ b/src/ZEO/ServerStub.py
@@ -13,7 +13,6 @@
 ##############################################################################
 """RPC stubs for interface exported by StorageServer."""
 
-import os
 import time
 from ZODB.utils import z64
 
diff --git a/src/ZEO/StorageServer.py b/src/ZEO/StorageServer.py
index bdcc7eefbd46b94019ef4c8c6f26cfd2e4920a21..5cc30dfeec27499780a4281f63a77f0ed94eb023 100644
--- a/src/ZEO/StorageServer.py
+++ b/src/ZEO/StorageServer.py
@@ -26,7 +26,6 @@ from ZEO.Exceptions import AuthError
 from ZEO.monitor import StorageStats, StatsServer
 from ZEO.zrpc.connection import ManagedServerConnection, Delay, MTDelay, Result
 from ZEO.zrpc.server import Dispatcher
-from ZEO.zrpc.trigger import trigger
 from ZODB.ConflictResolution import ResolvedSerial
 from ZODB.loglevels import BLATHER
 from ZODB.POSException import StorageError, StorageTransactionError
diff --git a/src/ZEO/hash.py b/src/ZEO/hash.py
index 456b857b287d1f80d67b1e184196abd4308de929..1cd42d88e917706fc2b65d67acae7fd6e4c4e9bc 100644
--- a/src/ZEO/hash.py
+++ b/src/ZEO/hash.py
@@ -16,8 +16,6 @@
 in favor of using hashlib for both. This class allows for compatibility
 between versions."""
 
-import sys
-
 try:
     import hashlib
     sha1 = hashlib.sha1
diff --git a/src/ZEO/monitor.py b/src/ZEO/monitor.py
index f8ea3f5320fae39dc98a3e8155529612ddf9c5aa..93cd6162c39c847085d1658f1af91045008151e8 100644
--- a/src/ZEO/monitor.py
+++ b/src/ZEO/monitor.py
@@ -22,8 +22,6 @@ import time
 import types
 import logging
 
-import ZEO
-
 zeo_version = 'unknown'
 try:
     import pkg_resources
diff --git a/src/ZEO/runzeo.py b/src/ZEO/runzeo.py
index 98e677445e07ff5041efed0f11597c3fca7022d5..b2e24e73d708c573681633bbf345de91762595b6 100644
--- a/src/ZEO/runzeo.py
+++ b/src/ZEO/runzeo.py
@@ -41,7 +41,7 @@ import signal
 import socket
 import logging
 
-import ZConfig, ZConfig.datatypes
+import ZConfig.datatypes
 import ZEO
 from zdaemon.zdoptions import ZDOptions
 
diff --git a/src/ZEO/scripts/cache_simul.py b/src/ZEO/scripts/cache_simul.py
index 76b8aaec1f8135136386928510c138e89599747d..652a3cad1053ee00ff14c5e92ca0375ca9479bf6 100755
--- a/src/ZEO/scripts/cache_simul.py
+++ b/src/ZEO/scripts/cache_simul.py
@@ -32,11 +32,9 @@ Note:
 
 import bisect
 import getopt
-import math
 import struct
 import re
 import sys
-import time
 import ZEO.cache
 
 from ZODB.utils import z64, u64
diff --git a/src/ZEO/tests/ConnectionTests.py b/src/ZEO/tests/ConnectionTests.py
index 4dddb9907bbbb4682ed908ccee193a24c7f8af5a..c764cbae2582821077ca7410cbc4283fb4715f65 100644
--- a/src/ZEO/tests/ConnectionTests.py
+++ b/src/ZEO/tests/ConnectionTests.py
@@ -13,9 +13,7 @@
 ##############################################################################
 
 import os
-import sys
 import time
-import random
 import socket
 import asyncore
 import threading
diff --git a/src/ZEO/tests/testZEOOptions.py b/src/ZEO/tests/testZEOOptions.py
index c927d29b2937c2abf2d3e33ba26a022f7f0a8b1a..49f4f6b36606d12188e1d3a08035b8ea483d37e3 100644
--- a/src/ZEO/tests/testZEOOptions.py
+++ b/src/ZEO/tests/testZEOOptions.py
@@ -15,7 +15,6 @@
 """Test suite for ZEO.runzeo.ZEOOptions."""
 
 import os
-import sys
 import tempfile
 import unittest
 
diff --git a/src/ZEO/tests/test_cache.py b/src/ZEO/tests/test_cache.py
index 0613da49649bb62badcb68e5843ab2936a5ad9dc..a736df6aaf9b880fb15f1895a8675af2aba307ce 100644
--- a/src/ZEO/tests/test_cache.py
+++ b/src/ZEO/tests/test_cache.py
@@ -16,7 +16,6 @@
 from ZODB.utils import p64, repr_to_oid
 import doctest
 import os
-import random
 import string
 import struct
 import sys
diff --git a/src/ZEO/zrpc/client.py b/src/ZEO/zrpc/client.py
index c66258e852597962f0d8e131eae9998159444c48..d9e1b09ef6ee96cabde910e7eb40a8f278dcba2e 100644
--- a/src/ZEO/zrpc/client.py
+++ b/src/ZEO/zrpc/client.py
@@ -19,9 +19,7 @@ import socket
 import sys
 import threading
 import time
-import traceback
 import types
-import logging
 import ZEO.zrpc.trigger
 
 
diff --git a/src/ZEO/zrpc/connection.py b/src/ZEO/zrpc/connection.py
index 51e6b46db0eabffd4105c829c9d5a7ef0e9868f2..8327c1750ba52e418a9db8a0720cb337eff555a7 100644
--- a/src/ZEO/zrpc/connection.py
+++ b/src/ZEO/zrpc/connection.py
@@ -12,15 +12,10 @@
 #
 ##############################################################################
 import asyncore
-import atexit
-import errno
-import select
 import sys
 import threading
 import logging
 
-import traceback, time
-
 import ZEO.zrpc.trigger
 
 from ZEO.zrpc import smac
diff --git a/src/ZODB/Connection.py b/src/ZODB/Connection.py
index 173076c244cbad8696420637c5e430266c5886d5..7dbff2e59a96103562c57aec104417d5721de52a 100644
--- a/src/ZODB/Connection.py
+++ b/src/ZODB/Connection.py
@@ -21,7 +21,6 @@ import tempfile
 import threading
 import warnings
 import os
-import shutil
 import time
 
 from persistent import PickleCache
@@ -48,7 +47,7 @@ from ZODB.POSException import InvalidObjectReference, ConnectionStateError
 from ZODB.POSException import ConflictError, ReadConflictError
 from ZODB.POSException import Unsupported, ReadOnlyHistoryError
 from ZODB.POSException import POSKeyError
-from ZODB.serialize import ObjectWriter, ObjectReader, myhasattr
+from ZODB.serialize import ObjectWriter, ObjectReader
 from ZODB.utils import p64, u64, z64, oid_repr, positive_id
 from ZODB import utils
 
diff --git a/src/ZODB/DB.py b/src/ZODB/DB.py
index 764cf8b66e34b304721ce21f0976cc8fd2202ec2..af695e7e5b339e88dcf0661e98dd1fefe6e39c52 100644
--- a/src/ZODB/DB.py
+++ b/src/ZODB/DB.py
@@ -20,7 +20,6 @@ import sys
 import threading
 import logging
 import datetime
-import calendar
 import time
 import warnings
 
diff --git a/src/ZODB/ExportImport.py b/src/ZODB/ExportImport.py
index 287b69b24adbde4943824fc371dad37fb8a65c25..f1643d04466b8088cc5b00413cae45f582deaf9b 100644
--- a/src/ZODB/ExportImport.py
+++ b/src/ZODB/ExportImport.py
@@ -22,7 +22,7 @@ import logging
 
 from ZODB.blob import Blob
 from ZODB.interfaces import IBlobStorage
-from ZODB.POSException import ExportError, POSKeyError
+from ZODB.POSException import ExportError
 from ZODB.serialize import referencesf
 from ZODB.utils import p64, u64, cp, mktemp
 
@@ -58,14 +58,14 @@ class ExportImport:
                 if supports_blobs:
                     if not isinstance(self._reader.getGhost(p), Blob):
                         continue # not a blob
-                    
+
                     blobfilename = self._storage.loadBlob(oid, serial)
                     f.write(blob_begin_marker)
                     f.write(p64(os.stat(blobfilename).st_size))
                     blobdata = open(blobfilename, "rb")
                     cp(blobdata, f)
                     blobdata.close()
-            
+
         f.write(export_end_marker)
         return f
 
@@ -177,7 +177,7 @@ class ExportImport:
             data = newp.getvalue()
 
             if blob_filename is not None:
-                self._storage.storeBlob(oid, None, data, blob_filename, 
+                self._storage.storeBlob(oid, None, data, blob_filename,
                                         '', transaction)
             else:
                 self._storage.store(oid, None, data, '', transaction)
diff --git a/src/ZODB/FileStorage/FileStorage.py b/src/ZODB/FileStorage/FileStorage.py
index a05943a7b508e91abb64676060b0bd12706bd45d..d45cbbfa682f74753f8260bd1d10d4421dce72d2 100644
--- a/src/ZODB/FileStorage/FileStorage.py
+++ b/src/ZODB/FileStorage/FileStorage.py
@@ -31,7 +31,6 @@ from ZODB.POSException import UndoError, POSKeyError, MultipleUndoErrors
 from ZODB.utils import p64, u64, z64
 
 import base64
-import BTrees.OOBTree
 import contextlib
 import errno
 import logging
diff --git a/src/ZODB/FileStorage/fsdump.py b/src/ZODB/FileStorage/fsdump.py
index 9531cded857315e0822334893750ffb9c6ca3e8b..514fb8679f88f9a67e779306556f63e5dc725514 100644
--- a/src/ZODB/FileStorage/fsdump.py
+++ b/src/ZODB/FileStorage/fsdump.py
@@ -18,7 +18,6 @@ from ZODB.FileStorage.format import TRANS_HDR, TRANS_HDR_LEN
 from ZODB.FileStorage.format import DATA_HDR, DATA_HDR_LEN
 from ZODB.TimeStamp import TimeStamp
 from ZODB.utils import u64, get_pickle_metadata
-from ZODB.tests.StorageTestBase import zodb_unpickle
 
 def fsdump(path, file=None, with_offset=1):
     iter = FileIterator(path)
diff --git a/src/ZODB/FileStorage/tests.py b/src/ZODB/FileStorage/tests.py
index 52667ab8c6fee17eb85f0b81678640ced1c72350..83541821f204eea2c988a571c3a8b722b616ca3c 100644
--- a/src/ZODB/FileStorage/tests.py
+++ b/src/ZODB/FileStorage/tests.py
@@ -11,7 +11,6 @@
 # FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-import cPickle
 import doctest
 import os
 import time
diff --git a/src/ZODB/MappingStorage.py b/src/ZODB/MappingStorage.py
index d21fc8336b5cdaaa44e38dfb6205f99e3c62f92c..0269686dba16971afd1c6bd0d0754ab3dfef53fe 100644
--- a/src/ZODB/MappingStorage.py
+++ b/src/ZODB/MappingStorage.py
@@ -18,7 +18,6 @@ storage without distracting storage details.
 """
 
 import BTrees
-import cPickle
 import time
 import threading
 import ZODB.BaseStorage
diff --git a/src/ZODB/scripts/analyze.py b/src/ZODB/scripts/analyze.py
index f2f1443d06f26260bb957465540363220d7314f0..a52b8f6cb688cbeba9192dab4ed1b5ebceb33ca3 100755
--- a/src/ZODB/scripts/analyze.py
+++ b/src/ZODB/scripts/analyze.py
@@ -3,7 +3,6 @@
 # Based on a transaction analyzer by Matt Kromer.
 
 import pickle
-import re
 import sys
 import types
 from ZODB.FileStorage import FileStorage
diff --git a/src/ZODB/scripts/manual_tests/testfstest.py b/src/ZODB/scripts/manual_tests/testfstest.py
index d85092f54c672e5abbfc17c6168549909e6dc60d..0f2374e40d60b768cef7ba5c8d5aa0b0f4319c09 100644
--- a/src/ZODB/scripts/manual_tests/testfstest.py
+++ b/src/ZODB/scripts/manual_tests/testfstest.py
@@ -4,10 +4,8 @@ Note:  To run this test script fstest.py must be on your PYTHONPATH.
 """
 
 from cStringIO import StringIO
-import os
 import re
 import struct
-import tempfile
 import unittest
 import ZODB.tests.util
 
diff --git a/src/ZODB/scripts/migrateblobs.py b/src/ZODB/scripts/migrateblobs.py
index 8dab29b5426e4c7e385769d387a8508539017dc5..cbc4977094ca0d298a25dd9f60ee0e48b3726c4f 100644
--- a/src/ZODB/scripts/migrateblobs.py
+++ b/src/ZODB/scripts/migrateblobs.py
@@ -19,8 +19,8 @@ import optparse
 import os
 import shutil
 
-from ZODB.blob import FilesystemHelper, rename_or_copy_blob
-from ZODB.utils import cp, oid_repr
+from ZODB.blob import FilesystemHelper
+from ZODB.utils import oid_repr
 
 
 def link_or_copy(f1, f2):
@@ -34,7 +34,7 @@ try:
     os.link
 except AttributeError:
     link_or_copy = shutil.copy
-    
+
 
 def migrate(source, dest, layout):
     source_fsh = FilesystemHelper(source)
diff --git a/src/ZODB/scripts/referrers.py b/src/ZODB/scripts/referrers.py
index de8fa52e7e55a52f38de5568ca0fe50f36befa61..6cc6a4014bc426ed625731f5f4e327a0657cd236 100644
--- a/src/ZODB/scripts/referrers.py
+++ b/src/ZODB/scripts/referrers.py
@@ -25,6 +25,3 @@ def referrers(storage):
             for oid in referencesf(record.data):
                 result.setdefault(oid, []).append((record.oid, record.tid))
     return result
-
-                
-            
diff --git a/src/ZODB/tests/Corruption.py b/src/ZODB/tests/Corruption.py
index 9d8bbe08e02415f02053ae7adf27460d8202df7e..24937d292f03ebb81fc10563a57a28c3234978d9 100644
--- a/src/ZODB/tests/Corruption.py
+++ b/src/ZODB/tests/Corruption.py
@@ -17,7 +17,7 @@ import os
 import random
 import stat
 
-import ZODB, ZODB.FileStorage
+import ZODB.FileStorage
 from StorageTestBase import StorageTestBase
 
 class FileStorageCorruptTests(StorageTestBase):
diff --git a/src/ZODB/tests/HistoryStorage.py b/src/ZODB/tests/HistoryStorage.py
index 6a842b32e04248b8d8a01f779cfabfa47a9b55c5..d46be70e72903bb771dc3a41bf3bc841f51ae1ec 100644
--- a/src/ZODB/tests/HistoryStorage.py
+++ b/src/ZODB/tests/HistoryStorage.py
@@ -18,7 +18,6 @@ all these tests.
 """
 
 from ZODB.tests.MinPO import MinPO
-from transaction import Transaction
 
 class HistoryStorage:
     def checkSimpleHistory(self):
@@ -59,4 +58,4 @@ class HistoryStorage:
         eq(d['tid'], revid2)
         d = h[2]
         eq(d['tid'], revid1)
-        
+
diff --git a/src/ZODB/tests/MVCCMappingStorage.py b/src/ZODB/tests/MVCCMappingStorage.py
index 497ed2b309b7a9e6b8e4ca9638b91142b67ee4f0..d9c1657db3f171607bbbee05b265d658cb45a6d4 100644
--- a/src/ZODB/tests/MVCCMappingStorage.py
+++ b/src/ZODB/tests/MVCCMappingStorage.py
@@ -17,14 +17,10 @@ Each Connection has its own view of the database.  Polling updates each
 connection's view.
 """
 
-import time
-
-import BTrees
 import ZODB.utils
 import ZODB.POSException
 from ZODB.interfaces import IMVCCStorage
 from ZODB.MappingStorage import MappingStorage
-from ZODB.TimeStamp import TimeStamp
 from zope.interface import implements
 
 
diff --git a/src/ZODB/tests/RecoveryStorage.py b/src/ZODB/tests/RecoveryStorage.py
index 129e0a19d39df623bd80684c17ecc3ce0ac85eb8..88860c60a824f0db2a8ca921d45fbb22fb99f18f 100644
--- a/src/ZODB/tests/RecoveryStorage.py
+++ b/src/ZODB/tests/RecoveryStorage.py
@@ -16,7 +16,7 @@
 import transaction
 from transaction import Transaction
 from ZODB.tests.IteratorStorage import IteratorDeepCompare
-from ZODB.tests.StorageTestBase import MinPO, zodb_unpickle, snooze
+from ZODB.tests.StorageTestBase import MinPO, snooze
 from ZODB import DB
 from ZODB.serialize import referencesf
 
diff --git a/src/ZODB/tests/testCache.py b/src/ZODB/tests/testCache.py
index 575a1127c9149da72ed16bffa5a4d37370601802..63189e0dda047679de2e497a6bc6c44f5b8a19e8 100644
--- a/src/ZODB/tests/testCache.py
+++ b/src/ZODB/tests/testCache.py
@@ -27,7 +27,6 @@ import doctest
 import gc
 import sys
 import threading
-import time
 import transaction
 import unittest
 import ZODB
diff --git a/src/ZODB/tests/testConnection.py b/src/ZODB/tests/testConnection.py
index 82d88156d80dfc5edf81b502df902c272e7bcfb6..8d9520ca69fc334f293fbaab8f991d911abf092f 100644
--- a/src/ZODB/tests/testConnection.py
+++ b/src/ZODB/tests/testConnection.py
@@ -17,13 +17,11 @@ from __future__ import with_statement
 
 import doctest
 import unittest
-import warnings
 
 from persistent import Persistent
 import transaction
 from ZODB.config import databaseFromString
-from ZODB.utils import p64, u64
-from ZODB.tests.warnhook import WarningsHook
+from ZODB.utils import p64
 from zope.interface.verify import verifyObject
 import ZODB.tests.util
 
diff --git a/src/ZODB/tests/testDB.py b/src/ZODB/tests/testDB.py
index 1c1bcf0ccae0d50d283ce99fec57ecbb28d1e22f..827c7bb8678d9229eb7831deb4fe23629365b811 100644
--- a/src/ZODB/tests/testDB.py
+++ b/src/ZODB/tests/testDB.py
@@ -13,7 +13,6 @@
 ##############################################################################
 
 from ZODB.tests.MinPO import MinPO
-import datetime
 import doctest
 import os
 import sys
@@ -60,7 +59,7 @@ class DBTests(ZODB.tests.util.TestCase):
     def test_references(self):
 
         # TODO: For now test that we're using referencesf.  We really should
-        #       have tests of referencesf.  
+        #       have tests of referencesf.
 
         import ZODB.serialize
         self.assert_(self.db.references is ZODB.serialize.referencesf)
diff --git a/src/ZODB/tests/testZODB.py b/src/ZODB/tests/testZODB.py
index 4af42106a4b110dd54edf31a24999c7bd26c6c1d..6404fc111b22fa839e48342bdb2ec7f5b4e5c72b 100644
--- a/src/ZODB/tests/testZODB.py
+++ b/src/ZODB/tests/testZODB.py
@@ -14,13 +14,11 @@
 
 from persistent import Persistent
 from persistent.mapping import PersistentMapping
-from ZODB.POSException import ReadConflictError, ConflictError
+from ZODB.POSException import ReadConflictError
 from ZODB.POSException import TransactionFailedError
-from ZODB.tests.warnhook import WarningsHook
 
 import transaction
 import unittest
-import warnings
 import ZODB
 import ZODB.FileStorage
 import ZODB.MappingStorage
diff --git a/src/ZODB/tests/test_storage.py b/src/ZODB/tests/test_storage.py
index 19b4619033c07114b2cc2fb0769fa9793a6ecc99..ec1d8d75d5ed7b65e4de00e9a5fa635c246a1fe2 100644
--- a/src/ZODB/tests/test_storage.py
+++ b/src/ZODB/tests/test_storage.py
@@ -21,7 +21,6 @@ storage tests against the test storage.
 from __future__ import with_statement
 
 import bisect
-import threading
 import unittest
 
 from ZODB.BaseStorage import BaseStorage
@@ -30,7 +29,7 @@ from ZODB.utils import z64
 
 from ZODB.tests import StorageTestBase
 from ZODB.tests import BasicStorage, MTStorage, Synchronization
-from ZODB.tests import PackableStorage, RevisionStorage
+from ZODB.tests import RevisionStorage
 
 class Transaction(object):
     """Hold data for current transaction for MinimalMemoryStorage."""
diff --git a/src/ZODB/tests/testconflictresolution.py b/src/ZODB/tests/testconflictresolution.py
index 2d3af20abbc15c7cb00cb7bc85e32e237bb51dae..56dc59ecc9ec50b89e9e0157e19f75b17ff36299 100644
--- a/src/ZODB/tests/testconflictresolution.py
+++ b/src/ZODB/tests/testconflictresolution.py
@@ -15,7 +15,6 @@ import manuel.doctest
 import manuel.footnote
 import manuel.capture
 import manuel.testing
-import unittest
 import ZODB.ConflictResolution
 import ZODB.tests.util
 import zope.testing.module
diff --git a/src/ZODB/tests/testpersistentclass.py b/src/ZODB/tests/testpersistentclass.py
index fa240c204071f45edef6f5b8344f32c55aef2dd0..8a39f8df844ccf38efac23841b94c4114338391e 100644
--- a/src/ZODB/tests/testpersistentclass.py
+++ b/src/ZODB/tests/testpersistentclass.py
@@ -12,7 +12,6 @@
 #
 ##############################################################################
 import doctest
-import os
 import sys
 import transaction
 import unittest
diff --git a/src/ZODB/tests/util.py b/src/ZODB/tests/util.py
index 8b1bfdf8c7b173a493b37519df3742fd8edefe87..e2be976575f9e7aa1a966f6c74f938aaeb0c18bc 100644
--- a/src/ZODB/tests/util.py
+++ b/src/ZODB/tests/util.py
@@ -20,16 +20,15 @@ from ZODB.MappingStorage import DB
 
 import atexit
 import os
-import tempfile
-import time
-import unittest
 import persistent
 import sys
+import tempfile
 import time
 import transaction
+import unittest
 import warnings
-import zope.testing.setupstack
 import ZODB.utils
+import zope.testing.setupstack
 
 def setUp(test, name='test'):
     transaction.abort()
diff --git a/src/ZODB/utils.py b/src/ZODB/utils.py
index 14dba4b6f869b823352a36219b37844f6838ba0b..19d0f942fcdb150ccfd1a57aa2138fabf5e5d7bf 100644
--- a/src/ZODB/utils.py
+++ b/src/ZODB/utils.py
@@ -19,7 +19,6 @@ from struct import pack, unpack
 from binascii import hexlify, unhexlify
 import cPickle as pickle
 from cStringIO import StringIO
-import weakref
 import warnings
 from tempfile import mkstemp
 import os