Blob Blame History Raw
From d9045729c8db81ddc82ed79dc24262c1e8d214e2 Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
Date: Fri, 12 Sep 2014 15:59:22 -0400
Subject: [PATCH 04/12] virtinst: Switch to relative imports, fix cyclic import
 warnings

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1111986

(cherry picked from commit eb7612356efd746ec142b6fca5e3df17bd80b2e0)
---
 virtconv/formats.py             |  18 +++----
 virtconv/ovf.py                 |   2 +-
 virtconv/vmx.py                 |   2 +-
 virtinst/__init__.py            |   4 +-
 virtinst/capabilities.py        |   6 +--
 virtinst/cli.py                 | 109 ++++++++++++++++++++++++----------------
 virtinst/clock.py               |   2 +-
 virtinst/cloner.py              |  10 ++--
 virtinst/connection.py          |  15 +++---
 virtinst/cpu.py                 |   2 +-
 virtinst/device.py              |   2 +-
 virtinst/deviceaudio.py         |   4 +-
 virtinst/devicechar.py          |   4 +-
 virtinst/devicecontroller.py    |   4 +-
 virtinst/devicedisk.py          |   8 +--
 virtinst/devicefilesystem.py    |   4 +-
 virtinst/devicegraphics.py      |   8 +--
 virtinst/devicehostdev.py       |   6 +--
 virtinst/deviceinput.py         |   4 +-
 virtinst/deviceinterface.py     |   6 +--
 virtinst/devicememballoon.py    |   4 +-
 virtinst/devicepanic.py         |   4 +-
 virtinst/deviceredirdev.py      |   4 +-
 virtinst/devicerng.py           |   4 +-
 virtinst/devicesmartcard.py     |   4 +-
 virtinst/devicetpm.py           |   4 +-
 virtinst/devicevideo.py         |   4 +-
 virtinst/devicewatchdog.py      |   4 +-
 virtinst/diskbackend.py         |   4 +-
 virtinst/distroinstaller.py     |  12 ++---
 virtinst/domainblkiotune.py     |   2 +-
 virtinst/domainfeatures.py      |   2 +-
 virtinst/domainmemorybacking.py |   2 +-
 virtinst/domainmemorytune.py    |   2 +-
 virtinst/domainnumatune.py      |   2 +-
 virtinst/domainresource.py      |   2 +-
 virtinst/guest.py               |  70 ++++++++++++++------------
 virtinst/idmap.py               |   2 +-
 virtinst/installer.py           |  12 ++---
 virtinst/interface.py           |   4 +-
 virtinst/network.py             |   4 +-
 virtinst/nodedev.py             |   4 +-
 virtinst/osxml.py               |   2 +-
 virtinst/pm.py                  |   2 +-
 virtinst/seclabel.py            |   2 +-
 virtinst/snapshot.py            |   4 +-
 virtinst/storage.py             |   4 +-
 virtinst/support.py             |   2 +-
 virtinst/urlfetcher.py          |   2 +-
 virtinst/xmlbuilder.py          |   2 +-
 50 files changed, 210 insertions(+), 186 deletions(-)

diff --git a/virtconv/formats.py b/virtconv/formats.py
index ccdaa9c..fed5e1c 100644
--- a/virtconv/formats.py
+++ b/virtconv/formats.py
@@ -53,14 +53,10 @@ class parser_class(object):
         raise NotImplementedError
 
 
-from virtconv.vmx import vmx_parser as _vmx_parser
-from virtconv.ovf import ovf_parser as _ovf_parser
-
-
-_parsers = [
-    _vmx_parser,
-    _ovf_parser,
-]
+def _get_parsers():
+    from .vmx import vmx_parser
+    from .ovf import ovf_parser
+    return [vmx_parser, ovf_parser]
 
 
 def _is_test():
@@ -71,7 +67,7 @@ def _find_parser_by_name(input_name):
     """
     Return the parser of the given name.
     """
-    parsers = [p for p in _parsers if p.name == input_name]
+    parsers = [p for p in _get_parsers() if p.name == input_name]
     if len(parsers):
         return parsers[0]
     raise RuntimeError(_("No parser found for type '%s'") % input_name)
@@ -81,7 +77,7 @@ def _find_parser_by_file(input_file):
     """
     Return the parser that is capable of comprehending the given file.
     """
-    for p in _parsers:
+    for p in _get_parsers():
         if p.identify_file(input_file):
             return p
     raise RuntimeError(_("Don't know how to parse file %s") % input_file)
@@ -155,7 +151,7 @@ def _find_input(input_file, parser, print_cb):
                 parser = _find_parser_by_file(input_file)
             return input_file, parser, force_clean
 
-        parsers = parser and [parser] or _parsers
+        parsers = parser and [parser] or _get_parsers()
         for root, ignore, files in os.walk(input_file):
             for p in parsers:
                 for f in [f for f in files if f.endswith(p.suffix)]:
diff --git a/virtconv/ovf.py b/virtconv/ovf.py
index 90fcf16..51ed1d4 100644
--- a/virtconv/ovf.py
+++ b/virtconv/ovf.py
@@ -25,7 +25,7 @@ import libxml2
 
 import virtinst
 
-from virtconv.formats import parser_class
+from .formats import parser_class
 
 
 # Mapping of ResourceType value to device type
diff --git a/virtconv/vmx.py b/virtconv/vmx.py
index 2c6db89..2234e6b 100644
--- a/virtconv/vmx.py
+++ b/virtconv/vmx.py
@@ -27,7 +27,7 @@ import shlex
 import virtinst
 from virtinst import util
 
-from virtconv.formats import parser_class
+from .formats import parser_class
 
 
 class _VMXLine(object):
diff --git a/virtinst/__init__.py b/virtinst/__init__.py
index 20fdc91..3a81173 100644
--- a/virtinst/__init__.py
+++ b/virtinst/__init__.py
@@ -34,7 +34,7 @@ def _setup_i18n():
 _setup_i18n()
 stable_defaults = _cliconfig.stable_defaults
 
-from virtinst import util
+from . import util
 from virtinst import support
 
 from virtinst.osxml import OSXML
@@ -50,7 +50,7 @@ from virtinst.seclabel import Seclabel
 from virtinst.pm import PM
 from virtinst.idmap import IdMap
 
-import virtinst.capabilities as CapabilitiesParser
+from virtinst import capabilities as CapabilitiesParser
 from virtinst.interface import Interface, InterfaceProtocol
 from virtinst.network import Network
 from virtinst.nodedev import NodeDevice
diff --git a/virtinst/capabilities.py b/virtinst/capabilities.py
index 455633f..f1cf8b7 100644
--- a/virtinst/capabilities.py
+++ b/virtinst/capabilities.py
@@ -21,7 +21,7 @@
 
 import re
 
-from virtinst import util
+from . import util
 
 # Whether a guest can be created with a certain feature on resp. off
 FEATURE_ON      = 0x01
@@ -688,8 +688,8 @@ class Capabilities(object):
         return (guest, domain)
 
     def build_virtinst_guest(self, conn, guest, domain):
-        from virtinst import Guest as VGuest
-        gobj = VGuest(conn)
+        from .guest import Guest as VMGuest
+        gobj = VMGuest(conn)
         gobj.type = domain.hypervisor_type
         gobj.os.os_type = guest.os_type
         gobj.os.arch = guest.arch
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 0037f34..5374034 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -31,8 +31,29 @@ import libvirt
 
 from virtcli import cliconfig
 
-import virtinst
-from virtinst import util
+from . import util
+from .clock import Clock
+from .deviceaudio import VirtualAudio
+from .devicechar import (VirtualChannelDevice, VirtualConsoleDevice,
+                         VirtualSerialDevice, VirtualParallelDevice)
+from .devicecontroller import VirtualController
+from .devicedisk import VirtualDisk
+from .devicefilesystem import VirtualFilesystem
+from .devicegraphics import VirtualGraphics
+from .devicehostdev import VirtualHostDevice
+from .deviceinterface import VirtualNetworkInterface
+from .devicememballoon import VirtualMemballoon
+from .devicepanic import VirtualPanicDevice
+from .deviceredirdev import VirtualRedirDevice
+from .devicerng import VirtualRNGDevice
+from .devicesmartcard import VirtualSmartCardDevice
+from .devicetpm import VirtualTPMDevice
+from .devicevideo import VirtualVideoDevice
+from .devicewatchdog import VirtualWatchdog
+from .domainnumatune import DomainNumatune
+from .nodedev import NodeDevice
+from .osxml import OSXML
+from .storage import StoragePool, StorageVolume
 
 
 force = False
@@ -192,8 +213,10 @@ def setupLogging(appname, debug_stdout, do_quiet, cli_app=True):
 ##############################
 
 def getConnection(uri):
+    from .connection import VirtualConnection
+
     logging.debug("Requesting libvirt URI %s", (uri or "default"))
-    conn = virtinst.VirtualConnection(uri)
+    conn = VirtualConnection(uri)
     conn.open(_do_creds_authname)
     conn.cache_object_fetch = True
     logging.debug("Received libvirt URI %s", conn.uri)
@@ -301,7 +324,7 @@ def validate_disk(dev, warn_overwrite=False):
         """
         if not warn_overwrite:
             return
-        if virtinst.VirtualDisk.path_exists(dev.conn, dev.path):
+        if VirtualDisk.path_exists(dev.conn, dev.path):
             _optional_fail(
                 _("This will overwrite the existing path '%s'" % dev.path))
 
@@ -399,8 +422,8 @@ def show_console_for_guest(guest):
 
     gtype = gdev[0].type
     if gtype in ["default",
-                 virtinst.VirtualGraphics.TYPE_VNC,
-                 virtinst.VirtualGraphics.TYPE_SPICE]:
+                 VirtualGraphics.TYPE_VNC,
+                 VirtualGraphics.TYPE_SPICE]:
         logging.debug("Launching virt-viewer for graphics type '%s'", gtype)
         return _gfx_console(guest)
     else:
@@ -1038,7 +1061,7 @@ class VirtCLIParser(object):
 
         @cli_arg_name: The command line argument this maps to, so
             "host-device" for --host-device
-        @guest: Will be set parse(), the toplevel virtinst.Guest object
+        @guest: Will be set parse(), the toplevel Guest object
         @remove_first: Passed to VirtOptionString
         @check_none: If the parsed option string is just 'none', return None
         @support_cb: An extra support check function for further validation.
@@ -1293,7 +1316,7 @@ class ParserVCPU(VirtCLIParser):
         def set_cpuset_cb(opts, inst, cliname, val):
             if val == "auto":
                 try:
-                    val = virtinst.DomainNumatune.generate_cpuset(
+                    val = DomainNumatune.generate_cpuset(
                         inst.conn, inst.memory)
                     logging.debug("Auto cpuset is: %s", val)
                 except Exception, e:
@@ -1421,7 +1444,7 @@ class ParserBoot(VirtCLIParser):
         # Order matters for boot devices, we handle it specially in parse
         def noset_cb(val):
             ignore = val
-        for b in virtinst.OSXML.BOOT_DEVICES:
+        for b in OSXML.BOOT_DEVICES:
             self.set_param(noset_cb, b)
 
     def _parse(self, opts, inst):
@@ -1527,7 +1550,7 @@ class ParserClock(VirtCLIParser):
 
             setattr(timerobj, attrname, val)
 
-        for tname in virtinst.Clock.TIMER_NAMES:
+        for tname in Clock.TIMER_NAMES:
             self.set_param(None, tname + "_present",
                 is_onoff=True,
                 setter_cb=set_timer)
@@ -1576,13 +1599,13 @@ def _parse_disk_source(guest, path, pool, vol, size, fmt, sparse):
     if path:
         abspath = os.path.abspath(path)
         if os.path.dirname(abspath) == "/var/lib/libvirt/images":
-            virtinst.StoragePool.build_default_pool(guest.conn)
+            StoragePool.build_default_pool(guest.conn)
 
     elif pool:
         if not size:
             raise ValueError(_("Size must be specified with all 'pool='"))
         if pool == "default":
-            virtinst.StoragePool.build_default_pool(guest.conn)
+            StoragePool.build_default_pool(guest.conn)
 
         poolobj = guest.conn.storagePoolLookupByName(pool)
         collidelist = []
@@ -1591,16 +1614,16 @@ def _parse_disk_source(guest, path, pool, vol, size, fmt, sparse):
                 disk.get_vol_install().pool.name() == poolobj.name()):
                 collidelist.append(os.path.basename(disk.path))
 
-        tmpvol = virtinst.StorageVolume(guest.conn)
+        tmpvol = StorageVolume(guest.conn)
         tmpvol.pool = poolobj
         if fmt is None and tmpvol.file_type == tmpvol.TYPE_FILE:
             fmt = _default_image_file_format(guest.conn)
 
-        ext = virtinst.StorageVolume.get_file_extension_for_format(fmt)
-        vname = virtinst.StorageVolume.find_free_name(
+        ext = StorageVolume.get_file_extension_for_format(fmt)
+        vname = StorageVolume.find_free_name(
             poolobj, guest.name, suffix=ext, collidelist=collidelist)
 
-        volinst = virtinst.VirtualDisk.build_vol_install(
+        volinst = VirtualDisk.build_vol_install(
                 guest.conn, vname, poolobj, size, sparse)
         if fmt:
             if not volinst.supports_property("format"):
@@ -1617,16 +1640,16 @@ def _parse_disk_source(guest, path, pool, vol, size, fmt, sparse):
         logging.debug("Parsed volume: as pool='%s' vol='%s'",
                       voltuple[0], voltuple[1])
         if voltuple[0] == "default":
-            virtinst.StoragePool.build_default_pool(guest.conn)
+            StoragePool.build_default_pool(guest.conn)
 
-        volobj = virtinst.VirtualDisk.lookup_vol_object(guest.conn, voltuple)
+        volobj = VirtualDisk.lookup_vol_object(guest.conn, voltuple)
 
     return abspath, volinst, volobj
 
 
 class ParserDisk(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualDisk
+        self.devclass = VirtualDisk
         self.remove_first = "path"
 
         def noset_cb(opts, inst, cliname, val):
@@ -1729,7 +1752,7 @@ parse_disk = ParserDisk("disk").parse
 
 class ParserNetwork(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualNetworkInterface
+        self.devclass = VirtualNetworkInterface
         self.remove_first = "type"
 
         def set_mac_cb(opts, inst, cliname, val):
@@ -1772,10 +1795,10 @@ class ParserNetwork(VirtCLIParser):
         opts = optsobj.opts
         if "type" not in opts:
             if "network" in opts:
-                opts["type"] = virtinst.VirtualNetworkInterface.TYPE_VIRTUAL
+                opts["type"] = VirtualNetworkInterface.TYPE_VIRTUAL
                 opts["source"] = opts.pop("network")
             elif "bridge" in opts:
-                opts["type"] = virtinst.VirtualNetworkInterface.TYPE_BRIDGE
+                opts["type"] = VirtualNetworkInterface.TYPE_BRIDGE
                 opts["source"] = opts.pop("bridge")
 
         return VirtCLIParser._parse(self, optsobj, inst)
@@ -1787,18 +1810,18 @@ class ParserNetwork(VirtCLIParser):
 
 class ParserGraphics(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualGraphics
+        self.devclass = VirtualGraphics
         self.remove_first = "type"
 
         def set_keymap_cb(opts, inst, cliname, val):
             ignore = opts
             ignore = cliname
-            from virtinst import hostkeymap
+            from . import hostkeymap
 
             if not val:
                 val = None
             elif val.lower() == "local":
-                val = virtinst.VirtualGraphics.KEYMAP_LOCAL
+                val = VirtualGraphics.KEYMAP_LOCAL
             elif val.lower() == "none":
                 val = None
             else:
@@ -1838,7 +1861,7 @@ class ParserGraphics(VirtCLIParser):
 
 class ParserController(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualController
+        self.devclass = VirtualController
         self.remove_first = "type"
 
         self.set_param("type", "type")
@@ -1853,7 +1876,7 @@ class ParserController(VirtCLIParser):
 
     def _parse(self, opts, inst):
         if opts.fullopts == "usb2":
-            return virtinst.VirtualController.get_usb2_controllers(inst.conn)
+            return VirtualController.get_usb2_controllers(inst.conn)
         elif opts.fullopts == "usb3":
             inst.type = "usb"
             inst.model = "nec-xhci"
@@ -1867,7 +1890,7 @@ class ParserController(VirtCLIParser):
 
 class ParserSmartcard(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualSmartCardDevice
+        self.devclass = VirtualSmartCardDevice
         self.remove_first = "mode"
         self.check_none = True
 
@@ -1881,7 +1904,7 @@ class ParserSmartcard(VirtCLIParser):
 
 class ParserRedir(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualRedirDevice
+        self.devclass = VirtualRedirDevice
         self.remove_first = "bus"
 
         self.set_param("bus", "bus")
@@ -1907,7 +1930,7 @@ class ParserRedir(VirtCLIParser):
 
 class ParserTPM(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualTPMDevice
+        self.devclass = VirtualTPMDevice
         self.remove_first = "type"
         self.check_none = True
 
@@ -1927,7 +1950,7 @@ class ParserTPM(VirtCLIParser):
 
 class ParserRNG(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualRNGDevice
+        self.devclass = VirtualRNGDevice
         self.remove_first = "type"
         self.check_none = True
 
@@ -1996,7 +2019,7 @@ class ParserRNG(VirtCLIParser):
 
 class ParserWatchdog(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualWatchdog
+        self.devclass = VirtualWatchdog
         self.remove_first = "model"
 
         self.set_param("model", "model")
@@ -2009,7 +2032,7 @@ class ParserWatchdog(VirtCLIParser):
 
 class ParserMemballoon(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualMemballoon
+        self.devclass = VirtualMemballoon
         self.remove_first = "model"
 
         self.set_param("model", "model")
@@ -2021,7 +2044,7 @@ class ParserMemballoon(VirtCLIParser):
 
 class ParserPanic(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualPanicDevice
+        self.devclass = VirtualPanicDevice
         self.remove_first = "iobase"
 
         def set_iobase_cb(opts, inst, cliname, val):
@@ -2120,19 +2143,19 @@ class _ParserChar(VirtCLIParser):
 
 
 class ParserSerial(_ParserChar):
-    devclass = virtinst.VirtualSerialDevice
+    devclass = VirtualSerialDevice
 
 
 class ParserParallel(_ParserChar):
-    devclass = virtinst.VirtualParallelDevice
+    devclass = VirtualParallelDevice
 
 
 class ParserChannel(_ParserChar):
-    devclass = virtinst.VirtualChannelDevice
+    devclass = VirtualChannelDevice
 
 
 class ParserConsole(_ParserChar):
-    devclass = virtinst.VirtualConsoleDevice
+    devclass = VirtualConsoleDevice
 
 
 ########################
@@ -2141,7 +2164,7 @@ class ParserConsole(_ParserChar):
 
 class ParserFilesystem(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualFilesystem
+        self.devclass = VirtualFilesystem
         self.remove_first = ["source", "target"]
 
         self.set_param("type", "type")
@@ -2156,7 +2179,7 @@ class ParserFilesystem(VirtCLIParser):
 
 class ParserVideo(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualVideoDevice
+        self.devclass = VirtualVideoDevice
         self.remove_first = "model"
 
         self.set_param("model", "model", ignore_default=True)
@@ -2168,7 +2191,7 @@ class ParserVideo(VirtCLIParser):
 
 class ParserSound(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualAudio
+        self.devclass = VirtualAudio
         self.remove_first = "model"
 
         self.set_param("model", "model", ignore_default=True)
@@ -2186,13 +2209,13 @@ class ParserSound(VirtCLIParser):
 
 class ParserHostdev(VirtCLIParser):
     def _init_params(self):
-        self.devclass = virtinst.VirtualHostDevice
+        self.devclass = VirtualHostDevice
         self.remove_first = "name"
 
         def set_name_cb(opts, inst, cliname, val):
             ignore = opts
             ignore = cliname
-            val = virtinst.NodeDevice.lookupNodeName(inst.conn, val)
+            val = NodeDevice.lookupNodeName(inst.conn, val)
             inst.set_from_nodedev(val)
 
         self.set_param(None, "name", setter_cb=set_name_cb)
diff --git a/virtinst/clock.py b/virtinst/clock.py
index cf56ed1..ccc640d 100644
--- a/virtinst/clock.py
+++ b/virtinst/clock.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 class _ClockTimer(XMLBuilder):
diff --git a/virtinst/cloner.py b/virtinst/cloner.py
index 33155d2..47734d6 100644
--- a/virtinst/cloner.py
+++ b/virtinst/cloner.py
@@ -26,11 +26,11 @@ import os
 import urlgrabber.progress as progress
 import libvirt
 
-from virtinst import Guest
-from virtinst import VirtualNetworkInterface
-from virtinst import VirtualDisk
-from virtinst import StorageVolume
-from virtinst import util
+from . import util
+from .guest import Guest
+from .deviceinterface import VirtualNetworkInterface
+from .devicedisk import VirtualDisk
+from .storage import StorageVolume
 
 
 class Cloner(object):
diff --git a/virtinst/connection.py b/virtinst/connection.py
index 10e22d2..a0fc73b 100644
--- a/virtinst/connection.py
+++ b/virtinst/connection.py
@@ -22,14 +22,13 @@ import weakref
 
 import libvirt
 
-from virtinst import CapabilitiesParser
-from virtinst import Guest
-from virtinst import StoragePool
-from virtinst import StorageVolume
-from virtinst import pollhelpers
-from virtinst import support
-from virtinst import util
-from virtinst.cli import VirtOptionString
+from . import pollhelpers
+from . import support
+from . import util
+from . import capabilities as CapabilitiesParser
+from .cli import VirtOptionString
+from .guest import Guest
+from .storage import StoragePool, StorageVolume
 
 _virtinst_uri_magic = "__virtinst_test__"
 
diff --git a/virtinst/cpu.py b/virtinst/cpu.py
index c323e1b..551364c 100644
--- a/virtinst/cpu.py
+++ b/virtinst/cpu.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
+from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
 
 
 class CPUFeature(XMLBuilder):
diff --git a/virtinst/device.py b/virtinst/device.py
index 6b35224..0557e4a 100644
--- a/virtinst/device.py
+++ b/virtinst/device.py
@@ -19,7 +19,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 class VirtualDeviceAlias(XMLBuilder):
diff --git a/virtinst/deviceaudio.py b/virtinst/deviceaudio.py
index 11c46b6..b6a2b24 100644
--- a/virtinst/deviceaudio.py
+++ b/virtinst/deviceaudio.py
@@ -17,8 +17,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualAudio(VirtualDevice):
diff --git a/virtinst/devicechar.py b/virtinst/devicechar.py
index f04b72f..a33362f 100644
--- a/virtinst/devicechar.py
+++ b/virtinst/devicechar.py
@@ -17,8 +17,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class _VirtualCharDevice(VirtualDevice):
diff --git a/virtinst/devicecontroller.py b/virtinst/devicecontroller.py
index 03857cf..bc19104 100644
--- a/virtinst/devicecontroller.py
+++ b/virtinst/devicecontroller.py
@@ -17,8 +17,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualController(VirtualDevice):
diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
index 9f39949..16e9b1a 100644
--- a/virtinst/devicedisk.py
+++ b/virtinst/devicedisk.py
@@ -28,10 +28,10 @@ import re
 
 import urlgrabber.progress as progress
 
-from virtinst import diskbackend
-from virtinst import util
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from . import diskbackend
+from . import util
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 def _qemu_sanitize_drvtype(phystype, fmt, manual_format=False):
diff --git a/virtinst/devicefilesystem.py b/virtinst/devicefilesystem.py
index 28eda74..1a0ec68 100644
--- a/virtinst/devicefilesystem.py
+++ b/virtinst/devicefilesystem.py
@@ -19,8 +19,8 @@
 
 import os
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualFilesystem(VirtualDevice):
diff --git a/virtinst/devicegraphics.py b/virtinst/devicegraphics.py
index 0946806..698e6c3 100644
--- a/virtinst/devicegraphics.py
+++ b/virtinst/devicegraphics.py
@@ -19,8 +19,8 @@
 
 import os
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 def _get_mode_prop(channel_type):
@@ -81,7 +81,7 @@ class VirtualGraphics(VirtualDevice):
         """
         Return a list of valid keymap values.
         """
-        from virtinst import hostkeymap
+        from . import hostkeymap
 
         orig_list = hostkeymap.keytable.values()
         sort_list = []
@@ -122,7 +122,7 @@ class VirtualGraphics(VirtualDevice):
             return None
 
         if self._local_keymap == -1:
-            from virtinst import hostkeymap
+            from . import hostkeymap
             self._local_keymap = hostkeymap.default_keymap()
         return self._local_keymap
 
diff --git a/virtinst/devicehostdev.py b/virtinst/devicehostdev.py
index a5d1a2a..0eca58a 100644
--- a/virtinst/devicehostdev.py
+++ b/virtinst/devicehostdev.py
@@ -17,9 +17,9 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst import NodeDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .nodedev import NodeDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualHostDevice(VirtualDevice):
diff --git a/virtinst/deviceinput.py b/virtinst/deviceinput.py
index a34f098..2fe078a 100644
--- a/virtinst/deviceinput.py
+++ b/virtinst/deviceinput.py
@@ -17,8 +17,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualInputDevice(VirtualDevice):
diff --git a/virtinst/deviceinterface.py b/virtinst/deviceinterface.py
index 8ed9c69..eaf4259 100644
--- a/virtinst/deviceinterface.py
+++ b/virtinst/deviceinterface.py
@@ -20,9 +20,9 @@
 import logging
 import random
 
-from virtinst import util
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from . import util
+from .device import VirtualDevice
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 def _random_mac(conn):
diff --git a/virtinst/devicememballoon.py b/virtinst/devicememballoon.py
index 856e021..78bc595 100644
--- a/virtinst/devicememballoon.py
+++ b/virtinst/devicememballoon.py
@@ -18,8 +18,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualMemballoon(VirtualDevice):
diff --git a/virtinst/devicepanic.py b/virtinst/devicepanic.py
index a41af94..040309b 100644
--- a/virtinst/devicepanic.py
+++ b/virtinst/devicepanic.py
@@ -18,8 +18,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualPanicDevice(VirtualDevice):
diff --git a/virtinst/deviceredirdev.py b/virtinst/deviceredirdev.py
index 2837585..e9f3de6 100644
--- a/virtinst/deviceredirdev.py
+++ b/virtinst/deviceredirdev.py
@@ -19,8 +19,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualRedirDevice(VirtualDevice):
diff --git a/virtinst/devicerng.py b/virtinst/devicerng.py
index f23120b..f56b7c8 100644
--- a/virtinst/devicerng.py
+++ b/virtinst/devicerng.py
@@ -18,8 +18,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualRNGDevice(VirtualDevice):
diff --git a/virtinst/devicesmartcard.py b/virtinst/devicesmartcard.py
index 635ad6d..aeefe01 100644
--- a/virtinst/devicesmartcard.py
+++ b/virtinst/devicesmartcard.py
@@ -19,8 +19,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualSmartCardDevice(VirtualDevice):
diff --git a/virtinst/devicetpm.py b/virtinst/devicetpm.py
index fa99011..9f10af0 100644
--- a/virtinst/devicetpm.py
+++ b/virtinst/devicetpm.py
@@ -22,8 +22,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualTPMDevice(VirtualDevice):
diff --git a/virtinst/devicevideo.py b/virtinst/devicevideo.py
index 922f07c..088c9ad 100644
--- a/virtinst/devicevideo.py
+++ b/virtinst/devicevideo.py
@@ -17,8 +17,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualVideoDevice(VirtualDevice):
diff --git a/virtinst/devicewatchdog.py b/virtinst/devicewatchdog.py
index 93ec8f2..84cce64 100644
--- a/virtinst/devicewatchdog.py
+++ b/virtinst/devicewatchdog.py
@@ -17,8 +17,8 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst import VirtualDevice
-from virtinst.xmlbuilder import XMLProperty
+from .device import VirtualDevice
+from .xmlbuilder import XMLProperty
 
 
 class VirtualWatchdog(VirtualDevice):
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index 2c74a11..7dceb39 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -24,8 +24,8 @@ import statvfs
 
 import libvirt
 
-from virtinst import StoragePool, StorageVolume
-from virtinst import util
+from . import util
+from .storage import StoragePool, StorageVolume
 
 
 def _check_if_pool_source(conn, path):
diff --git a/virtinst/distroinstaller.py b/virtinst/distroinstaller.py
index 10148e0..2ea9380 100644
--- a/virtinst/distroinstaller.py
+++ b/virtinst/distroinstaller.py
@@ -25,12 +25,12 @@ import tempfile
 
 import urlgrabber
 
-from virtinst import StoragePool, StorageVolume
-from virtinst import util
-from virtinst import Installer
-from virtinst import VirtualDisk
-from virtinst import urlfetcher
-from virtinst import osdict
+from . import osdict
+from . import urlfetcher
+from . import util
+from .devicedisk import VirtualDisk
+from .installer import Installer
+from .storage import StoragePool, StorageVolume
 
 
 def _is_url(conn, url):
diff --git a/virtinst/domainblkiotune.py b/virtinst/domainblkiotune.py
index 9a2e022..ff73fb1 100644
--- a/virtinst/domainblkiotune.py
+++ b/virtinst/domainblkiotune.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class DomainBlkiotune(XMLBuilder):
diff --git a/virtinst/domainfeatures.py b/virtinst/domainfeatures.py
index 71d5922..bec538b 100644
--- a/virtinst/domainfeatures.py
+++ b/virtinst/domainfeatures.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class DomainFeatures(XMLBuilder):
diff --git a/virtinst/domainmemorybacking.py b/virtinst/domainmemorybacking.py
index 4dc73a2..a95f1dc 100644
--- a/virtinst/domainmemorybacking.py
+++ b/virtinst/domainmemorybacking.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class DomainMemorybacking(XMLBuilder):
diff --git a/virtinst/domainmemorytune.py b/virtinst/domainmemorytune.py
index efc917f..6b89c06 100644
--- a/virtinst/domainmemorytune.py
+++ b/virtinst/domainmemorytune.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class DomainMemorytune(XMLBuilder):
diff --git a/virtinst/domainnumatune.py b/virtinst/domainnumatune.py
index 86b4690..a054c2b 100644
--- a/virtinst/domainnumatune.py
+++ b/virtinst/domainnumatune.py
@@ -19,7 +19,7 @@
 
 import re
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 def get_phy_cpus(conn):
diff --git a/virtinst/domainresource.py b/virtinst/domainresource.py
index 102409a..9ade011 100644
--- a/virtinst/domainresource.py
+++ b/virtinst/domainresource.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class DomainResource(XMLBuilder):
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 18adc3a..ce7399f 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -26,25 +26,31 @@ import libvirt
 
 from virtcli import cliconfig
 
-import virtinst
-from virtinst import util
-from virtinst import support
-from virtinst import OSXML
-from virtinst import VirtualDevice
-from virtinst import Clock
-from virtinst import Seclabel
-from virtinst import CPU
-from virtinst import DomainNumatune
-from virtinst import DomainMemorytune
-from virtinst import DomainMemorybacking
-from virtinst import DomainBlkiotune
-from virtinst import DomainFeatures
-from virtinst import DomainResource
-from virtinst import PM
-from virtinst import IdMap
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
-
-from virtinst import osdict
+from . import osdict
+from . import util
+from . import support
+from .clock import Clock
+from .cpu import CPU
+from .device import VirtualDevice
+from .deviceaudio import VirtualAudio
+from .devicechar import VirtualChannelDevice, VirtualConsoleDevice
+from .devicecontroller import VirtualController
+from .devicegraphics import VirtualGraphics
+from .deviceinput import VirtualInputDevice
+from .deviceredirdev import VirtualRedirDevice
+from .devicevideo import VirtualVideoDevice
+from .distroinstaller import DistroInstaller
+from .domainblkiotune import DomainBlkiotune
+from .domainfeatures import DomainFeatures
+from .domainmemorybacking import DomainMemorybacking
+from .domainmemorytune import DomainMemorytune
+from .domainnumatune import DomainNumatune
+from .domainresource import DomainResource
+from .idmap import IdMap
+from .osxml import OSXML
+from .pm import PM
+from .seclabel import Seclabel
+from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
 
 
 class Guest(XMLBuilder):
@@ -122,7 +128,7 @@ class Guest(XMLBuilder):
         # The libvirt virDomain object we 'Create'
         self.domain = None
 
-        self.installer = virtinst.DistroInstaller(self.conn)
+        self.installer = DistroInstaller(self.conn)
 
 
     ######################
@@ -534,14 +540,14 @@ class Guest(XMLBuilder):
             return
         if self.get_devices("input"):
             return
-        self.add_device(virtinst.VirtualInputDevice(self.conn))
+        self.add_device(VirtualInputDevice(self.conn))
 
     def add_default_sound_device(self):
         if not self.os.is_hvm():
             return
         if not self.os.is_x86():
             return
-        self.add_device(virtinst.VirtualAudio(self.conn))
+        self.add_device(VirtualAudio(self.conn))
 
     def add_default_console_device(self):
         if self.skip_default_console:
@@ -551,7 +557,7 @@ class Guest(XMLBuilder):
         if self.get_devices("console") or self.get_devices("serial"):
             return
 
-        dev = virtinst.VirtualConsoleDevice(self.conn)
+        dev = VirtualConsoleDevice(self.conn)
         dev.type = dev.TYPE_PTY
 
         if (self.os.is_x86() and
@@ -569,7 +575,7 @@ class Guest(XMLBuilder):
             return
         if not self.get_devices("graphics"):
             return
-        self.add_device(virtinst.VirtualVideoDevice(self.conn))
+        self.add_device(VirtualVideoDevice(self.conn))
 
     def add_default_usb_controller(self):
         if self.os.is_container():
@@ -581,7 +587,7 @@ class Guest(XMLBuilder):
         if not self.conn.check_support(
             self.conn.SUPPORT_CONN_DEFAULT_USB2):
             return
-        for dev in virtinst.VirtualController.get_usb2_controllers(self.conn):
+        for dev in VirtualController.get_usb2_controllers(self.conn):
             self.add_device(dev)
 
     def add_default_channels(self):
@@ -595,7 +601,7 @@ class Guest(XMLBuilder):
             not self.os.is_arm() and
             self._lookup_osdict_key("qemu_ga", False) and
             self.conn.check_support(self.conn.SUPPORT_CONN_AUTOSOCKET)):
-            dev = virtinst.VirtualChannelDevice(self.conn)
+            dev = VirtualChannelDevice(self.conn)
             dev.type = "unix"
             dev.target_type = "virtio"
             dev.target_name = dev.CHANNEL_NAME_QEMUGA
@@ -610,7 +616,7 @@ class Guest(XMLBuilder):
             return
         if self.os.arch not in ["x86_64", "i686", "ppc64", "ia64"]:
             return
-        self.add_device(virtinst.VirtualGraphics(self.conn))
+        self.add_device(VirtualGraphics(self.conn))
 
     def add_default_devices(self):
         self.add_default_graphics()
@@ -801,7 +807,7 @@ class Guest(XMLBuilder):
                 dev.virtual_device_type == "disk" and
                 not any([cont.address.type == "spapr-vio" for cont in
                         self.get_devices("controller")])):
-                ctrl = virtinst.VirtualController(self.conn)
+                ctrl = VirtualController(self.conn)
                 ctrl.type = "scsi"
                 ctrl.address.set_addrstr("spapr-vio")
                 self.add_device(ctrl)
@@ -896,8 +902,8 @@ class Guest(XMLBuilder):
         input_type = self._lookup_osdict_key("inputtype", "mouse")
         input_bus = self._lookup_osdict_key("inputbus", "ps2")
         if self.os.is_xenpv():
-            input_type = virtinst.VirtualInputDevice.TYPE_MOUSE
-            input_bus = virtinst.VirtualInputDevice.BUS_XEN
+            input_type = VirtualInputDevice.TYPE_MOUSE
+            input_bus = VirtualInputDevice.BUS_XEN
 
         for inp in self.get_devices("input"):
             if (inp.type == inp.TYPE_DEFAULT and
@@ -943,7 +949,7 @@ class Guest(XMLBuilder):
                 return
 
         if self.conn.check_support(self.conn.SUPPORT_CONN_CHAR_SPICEVMC):
-            agentdev = virtinst.VirtualChannelDevice(self.conn)
+            agentdev = VirtualChannelDevice(self.conn)
             agentdev.type = agentdev.TYPE_SPICEVMC
             self.add_device(agentdev)
 
@@ -963,7 +969,7 @@ class Guest(XMLBuilder):
             return
 
         for ignore in range(4):
-            dev = virtinst.VirtualRedirDevice(self.conn)
+            dev = VirtualRedirDevice(self.conn)
             dev.bus = "usb"
             dev.type = "spicevmc"
             self.add_device(dev)
diff --git a/virtinst/idmap.py b/virtinst/idmap.py
index dae499e..c0af0e1 100644
--- a/virtinst/idmap.py
+++ b/virtinst/idmap.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class IdMap(XMLBuilder):
diff --git a/virtinst/installer.py b/virtinst/installer.py
index 4482ae6..a227fb7 100644
--- a/virtinst/installer.py
+++ b/virtinst/installer.py
@@ -22,8 +22,8 @@
 import os
 import logging
 
-import virtinst
-from virtinst import OSXML
+from .devicedisk import VirtualDisk
+from .osxml import OSXML
 
 
 class Installer(object):
@@ -102,7 +102,7 @@ class Installer(object):
         return bootorder
 
     def _make_cdrom_dev(self, path, transient=False):
-        dev = virtinst.VirtualDisk(self.conn)
+        dev = VirtualDisk(self.conn)
         dev.path = path
         dev.device = dev.DEVICE_CDROM
         dev.read_only = True
@@ -255,11 +255,11 @@ class ImportInstaller(Installer):
         return self._disk_to_bootdev(disks[0])
 
     def _disk_to_bootdev(self, disk):
-        if disk.device == virtinst.VirtualDisk.DEVICE_DISK:
+        if disk.device == VirtualDisk.DEVICE_DISK:
             return OSXML.BOOT_DEVICE_HARDDISK
-        elif disk.device == virtinst.VirtualDisk.DEVICE_CDROM:
+        elif disk.device == VirtualDisk.DEVICE_CDROM:
             return OSXML.BOOT_DEVICE_CDROM
-        elif disk.device == virtinst.VirtualDisk.DEVICE_FLOPPY:
+        elif disk.device == VirtualDisk.DEVICE_FLOPPY:
             return OSXML.BOOT_DEVICE_FLOPPY
         else:
             return OSXML.BOOT_DEVICE_HARDDISK
diff --git a/virtinst/interface.py b/virtinst/interface.py
index 4fca76a..0857895 100644
--- a/virtinst/interface.py
+++ b/virtinst/interface.py
@@ -25,8 +25,8 @@ import logging
 import libvirt
 import ipaddr
 
-from virtinst import util
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from . import util
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 class _IPAddress(XMLBuilder):
diff --git a/virtinst/network.py b/virtinst/network.py
index 2284ea4..8b486d8 100644
--- a/virtinst/network.py
+++ b/virtinst/network.py
@@ -24,8 +24,8 @@ import logging
 
 import libvirt
 
-from virtinst import util
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from . import util
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 class _NetworkDHCPRange(XMLBuilder):
diff --git a/virtinst/nodedev.py b/virtinst/nodedev.py
index 17524dc..a42c20d 100644
--- a/virtinst/nodedev.py
+++ b/virtinst/nodedev.py
@@ -21,8 +21,8 @@ import logging
 
 import libvirt
 
-from virtinst.xmlbuilder import XMLBuilder
-from virtinst.xmlbuilder import XMLProperty as OrigXMLProperty
+from .xmlbuilder import XMLBuilder
+from .xmlbuilder import XMLProperty as OrigXMLProperty
 
 
 # We had a pre-existing set of parse tests when this was converted to
diff --git a/virtinst/osxml.py b/virtinst/osxml.py
index ea543e7..113afa6 100644
--- a/virtinst/osxml.py
+++ b/virtinst/osxml.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
+from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
 
 
 class _InitArg(XMLBuilder):
diff --git a/virtinst/pm.py b/virtinst/pm.py
index a8b5a2b..45a050c 100644
--- a/virtinst/pm.py
+++ b/virtinst/pm.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class PM(XMLBuilder):
diff --git a/virtinst/seclabel.py b/virtinst/seclabel.py
index 76afb1d..eeba66a 100644
--- a/virtinst/seclabel.py
+++ b/virtinst/seclabel.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 # MA 02110-1301 USA.
 
-from virtinst.xmlbuilder import XMLBuilder, XMLProperty
+from .xmlbuilder import XMLBuilder, XMLProperty
 
 
 class Seclabel(XMLBuilder):
diff --git a/virtinst/snapshot.py b/virtinst/snapshot.py
index 54fa2ce..934af1d 100644
--- a/virtinst/snapshot.py
+++ b/virtinst/snapshot.py
@@ -19,8 +19,8 @@
 
 import libvirt
 
-from virtinst import util
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from . import util
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
 
 
 class _SnapshotDisk(XMLBuilder):
diff --git a/virtinst/storage.py b/virtinst/storage.py
index 874a809..e58f7ea 100644
--- a/virtinst/storage.py
+++ b/virtinst/storage.py
@@ -25,8 +25,8 @@ import logging
 import libvirt
 import urlgrabber
 
-from virtinst.xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
-from virtinst import util
+from .xmlbuilder import XMLBuilder, XMLChildProperty, XMLProperty
+from . import util
 
 
 DEFAULT_DEV_TARGET = "/dev"
diff --git a/virtinst/support.py b/virtinst/support.py
index b7862a3..eacbf3e 100644
--- a/virtinst/support.py
+++ b/virtinst/support.py
@@ -21,7 +21,7 @@
 
 import libvirt
 
-from virtinst import util
+from . import util
 
 
 # Check that command is present in the python bindings, and return the
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index 0c1b5cd..25baf05 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -32,7 +32,7 @@ import urlparse
 
 import urlgrabber.grabber as grabber
 
-from virtinst import osdict
+from . import osdict
 
 
 #########################################################################
diff --git a/virtinst/xmlbuilder.py b/virtinst/xmlbuilder.py
index 1e09c4f..77f8173 100644
--- a/virtinst/xmlbuilder.py
+++ b/virtinst/xmlbuilder.py
@@ -26,7 +26,7 @@ import re
 
 import libxml2
 
-from virtinst import util
+from . import util
 
 
 # pylint: disable=protected-access
-- 
1.9.3