diff --git a/README.md b/README.md
index 4f2dfea0ff6164f2ea06f001a34405dc4d2bcbab..92690e57bad38e6a1a7c1e076b5dc7926bcd4ee1 100644
--- a/README.md
+++ b/README.md
@@ -15,13 +15,18 @@ situations. Currently, package extras are not finished.
 
 ```console
 $ pipdeps --help
-usage: pipdeps [-h] (-l | -t | -u | -s [SHOW [SHOW ...]])
+usage: pipdeps [-h] [-e [EXCLUDE [EXCLUDE ...]]]
+               (-l | -t | -u | -s [SHOW [SHOW ...]])
 
 Pipdeps shows/upgrades outdated packages with respect to existing
 dependencies.
 
 optional arguments:
   -h, --help            show this help message and exit
+  -e [EXCLUDE [EXCLUDE ...]], --exclude [EXCLUDE [EXCLUDE ...]]
+                        Comma separated list of excluded package (and
+                        version). Format package==version or package for all
+                        versions
   -l, --list            show list of upgradeable packages and versions
   -t, --table           show table of upgradeable packages and versions
   -u, --upgrade         upgrade upgradeable packages
diff --git a/pipdeps/pipdeps.py b/pipdeps/pipdeps.py
index 606796a68381356f81683558414005b9c4a57f44..e022823cb6d8b28c7b2560a71676944081066615 100644
--- a/pipdeps/pipdeps.py
+++ b/pipdeps/pipdeps.py
@@ -39,6 +39,10 @@ def arg_parse():
         description="Pipdeps shows/upgrades outdated packages with respect to existing \
                      dependencies."
     )
+    parser.add_argument('-e', '--exclude',
+                        nargs='*',
+                        help="Space-separated list of excluded package (and version). \
+                              Format package==version or package for all versions")
     group = parser.add_mutually_exclusive_group(required=True)
     group.add_argument('-l', '--list',
                        action='store_true',
@@ -54,6 +58,14 @@ def arg_parse():
                        help="show detailed info about upgradeable packages")
     return parser.parse_args()
 
+def get_excludes(data):
+    """
+    Parse argument excludes into array of (pkg, ver)
+    """
+    if data is None:
+        return []
+    return [pkg.split("==") for pkg in data]
+
 def upgrade_package(data):
     """
     pip install --upgrade "<package>==<versions>"
@@ -645,6 +657,33 @@ def get_hards(data, package_no_news):
                          'extras': list(set(extras))}
     return out
 
+def del_excls(data, excludes):
+    """
+    Return list of packages and their versions that are excluded by argument
+    """
+    to_delete = []
+    _package_no_news, package_with_news = single_multi(data)
+    package_not_installed = not_installed(data)
+    for exc in excludes:
+        try:
+            exc_pkg, exc_ver = exc[0], exc[1]
+        except IndexError:
+            exc_pkg, exc_ver = exc[0], None
+        if exc_pkg not in package_with_news+package_not_installed:
+            print "Warning! Excluded package {} has no upgrades. Ignoring".format(exc_pkg)
+            continue
+        vers = [ver for ver, _ver_data in data[exc_pkg]['new_version'].iteritems()]
+        if exc_ver is not None and exc_ver not in vers:
+            print "Warning! Excluded package {}=={} is not upgradable. Ignoring".format(exc_pkg,
+                                                                                        exc_ver)
+            continue
+        if exc_ver is None:
+            for ver in vers:
+                to_delete.append((exc_pkg, ver))
+        else:
+            to_delete.append((exc_pkg, exc_ver))
+    return to_delete
+
 def del_hards(data):
     """
     Return list of packages and their versions that does not satisfy
@@ -1110,7 +1149,9 @@ def main():
     """
     os.environ["PYTHONWARNINGS"] = "ignore:DEPRECATION"
     arguments = arg_parse()
+    excludes = get_excludes(arguments.exclude)
     packages_data = get_pkg_data()
+    packages_data = move_incompatible(packages_data, del_excls(packages_data, excludes))
     packages_data = first_loop(packages_data)
 
     i_branch = ibranch(packages_data)