diff --git a/setup.py b/setup.py
index b4d078d..1c49faf 100644
--- a/setup.py
+++ b/setup.py
@@ -16,5 +16,5 @@
     package_dir={"": "src"},
     packages=["cs50"],
     url="https://github.com/cs50/python-cs50",
-    version="2.1.1"
+    version="2.2.0"
 )
diff --git a/src/cs50/cs50.py b/src/cs50/cs50.py
index 5661aa9..b03cf04 100644
--- a/src/cs50/cs50.py
+++ b/src/cs50/cs50.py
@@ -117,7 +117,8 @@ def get_string(prompt=None):
     Read a line of text from standard input and return it as a string,
     sans trailing line ending. Supports CR (\r), LF (\n), and CRLF (\r\n)
     as line endings. If user inputs only a line ending, returns "", not None.
-    Returns None upon error or no input whatsoever (i.e., just EOF).
+    Returns None upon error or no input whatsoever (i.e., just EOF). Exits
+    from Python altogether on SIGINT.
     """
     try:
         if prompt is not None:
@@ -126,5 +127,7 @@ def get_string(prompt=None):
         if not s:
             return None
         return re.sub(r"(?:\r|\r\n|\n)$", "", s)
+    except KeyboardInterrupt:
+        sys.exit("")
     except ValueError:
         return None
diff --git a/tests/python2.py b/tests/python2.py
index 69de822..c132c20 100644
--- a/tests/python2.py
+++ b/tests/python2.py
@@ -1,3 +1,7 @@
+import sys
+
+sys.path.insert(0, "../src")
+
 import cs50
 
 l = cs50.get_long()
diff --git a/tests/python3.py b/tests/python3.py
index b545b98..452b421 100644
--- a/tests/python3.py
+++ b/tests/python3.py
@@ -1,3 +1,7 @@
+import sys
+
+sys.path.insert(0, "../src")
+
 import cs50
 
 i = cs50.get_int()
diff --git a/tests/sqltests.py b/tests/sqltests.py
index c1f3c0e..c2af662 100644
--- a/tests/sqltests.py
+++ b/tests/sqltests.py
@@ -3,6 +3,8 @@
 import unittest
 import warnings
 
+sys.path.insert(0, "../src")
+
 from cs50.sql import SQL
 
 class SQLTests(unittest.TestCase):