diff --git a/src/aliby/io/dataset.py b/src/aliby/io/dataset.py
index eaec2688537a187d211e2c26fe6859c7702ca596..b09567ed933cdafcf4b411d5a1c2b6d4f217318d 100644
--- a/src/aliby/io/dataset.py
+++ b/src/aliby/io/dataset.py
@@ -13,8 +13,10 @@ from abc import ABC, abstractproperty, abstractmethod
 from pathlib import Path, PosixPath
 from typing import Union
 
-import omero
-
+try:
+    import omero
+except ModuleNotFoundError:
+    print("Warning: Cannot import omero.")
 from agora.io.bridge import BridgeH5
 from aliby.io.image import ImageLocalOME
 from aliby.io.omero import BridgeOmero
diff --git a/src/aliby/io/image.py b/src/aliby/io/image.py
index fd9109637dbaa03b1d8407e2ac4dc9223f4a2780..fe6c0759f9d746fe91ad78d93a19db8f23a9e0f3 100644
--- a/src/aliby/io/image.py
+++ b/src/aliby/io/image.py
@@ -10,25 +10,41 @@ import numpy as np
 import xmltodict
 from dask import delayed
 from dask.array.image import imread
-from omero.model import enums as omero_enums
+
+try:
+    from omero.model import enums as omero_enums
+except ModuleNotFoundError:
+    print("Warning: Cannot import omero_enums.")
 from tifffile import TiffFile
 from yaml import safe_load
 
 from agora.io.bridge import BridgeH5
 from agora.io.metadata import dir_to_meta
-from aliby.io.omero import BridgeOmero
+
+try:
+    from aliby.io.omero import BridgeOmero
+except ModuleNotFoundError:
+
+    class BridgeOmero:
+        # dummy class necessary when the omero module is not installed
+        pass
+
+    print("Warning: Cannot import BridgeOmero.")
 
 # convert OMERO definitions into numpy types
-PIXEL_TYPES = {
-    omero_enums.PixelsTypeint8: np.int8,
-    omero_enums.PixelsTypeuint8: np.uint8,
-    omero_enums.PixelsTypeint16: np.int16,
-    omero_enums.PixelsTypeuint16: np.uint16,
-    omero_enums.PixelsTypeint32: np.int32,
-    omero_enums.PixelsTypeuint32: np.uint32,
-    omero_enums.PixelsTypefloat: np.float32,
-    omero_enums.PixelsTypedouble: np.float64,
-}
+try:
+    PIXEL_TYPES = {
+        omero_enums.PixelsTypeint8: np.int8,
+        omero_enums.PixelsTypeuint8: np.uint8,
+        omero_enums.PixelsTypeint16: np.int16,
+        omero_enums.PixelsTypeuint16: np.uint16,
+        omero_enums.PixelsTypeint32: np.int32,
+        omero_enums.PixelsTypeuint32: np.uint32,
+        omero_enums.PixelsTypefloat: np.float32,
+        omero_enums.PixelsTypedouble: np.float64,
+    }
+except NameError:
+    print("Warning: PIXEL_TYPES are not defined.")
 
 
 def get_image_class(source: t.Union[str, int, t.Dict[str, str], PosixPath]):
@@ -266,12 +282,12 @@ class ImageDir(BaseLocalImage):
 
 class Image(BridgeOmero):
     """
-    Loads images from OMERO and gives access to the data and metadata.
+    Load images from OMERO and gives access to the data and metadata.
     """
 
     def __init__(self, image_id: int, **server_info):
         """
-        Establishes the connection to the OMERO server via the Argo
+        Establish the connection to the OMERO server via the Argo
         base class.
 
         Parameters
@@ -292,7 +308,8 @@ class Image(BridgeOmero):
         cls,
         filepath: t.Union[str, PosixPath],
     ):
-        """Instatiate Image from a hdf5 file.
+        """
+        Instantiate Image from a hdf5 file.
 
         Parameters
         ----------
diff --git a/src/aliby/io/omero.py b/src/aliby/io/omero.py
index af8f451bd00b6cc5920ddf002efd70ae0080934a..9ae5ffba80b42accfdc0be12c623e2926763bad7 100644
--- a/src/aliby/io/omero.py
+++ b/src/aliby/io/omero.py
@@ -4,7 +4,11 @@ from pathlib import PosixPath
 import re
 
 from agora.io.bridge import BridgeH5
-from omero.gateway import BlitzGateway
+
+try:
+    from omero.gateway import BlitzGateway
+except ModuleNotFoundError:
+    print("Warning: Cannot import BlitzGateway.")
 from yaml import safe_load