diff --git a/magicalimport/__init__.py b/magicalimport/__init__.py
index 48a5ff0..6c50b0f 100644
--- a/magicalimport/__init__.py
+++ b/magicalimport/__init__.py
@@ -25,7 +25,10 @@ def import_from_physical_path(path, as_=None, here=None):
     module_id = as_ or path.replace("/", "_").rsplit(".py", 1)[0]
     if module_id in sys.modules:
         return sys.modules[module_id]
-    return _create_module(module_id, path)
+    try:
+        return _create_module(module_id, path)
+    except FileNotFoundError as e:
+        raise ModuleNotFoundError(e) from None
 
 
 def import_module(module_path, here=None, sep=":"):
@@ -36,13 +39,19 @@ def import_module(module_path, here=None, sep=":"):
         return import_module_original(module_path)
 
 
-def import_symbol(sym, here=None, sep=":", ns=None):
+def import_symbol(sym, here=None, sep=":", ns=None, silent=False):
     if ns is not None and sep not in sym:
         sym = "{}{}{}".format(ns, sep, sym)
     module_path, fn_name = sym.rsplit(sep, 2)
     try:
         module = import_module(module_path, here=here, sep=sep)
-        return getattr(module, fn_name)
-    except (ImportError, AttributeError) as e:
-        sys.stderr.write("could not import {!r}\n{}\n".format(sym, e))
+    except ImportError as e:  # ModuleNotFoundError is subclass of ImportError
+        if not silent:
+            sys.stderr.write("could not import {!r}\n{}\n".format(sym, e))
         raise
+    try:
+        return getattr(module, fn_name)
+    except AttributeError as e:
+        if not silent:
+            sys.stderr.write("could not import {!r}\n{}\n".format(sym, e))
+        raise ImportError(e) from None

raise AttributeError when target file is not found, instead of AttributeError
```
>>> from magicalimport import import_from_physical_path
>>> import_from_physical_path("jifoewjifoew.py")
...
FileNotFoundError: [Errno 2] No such file or directory: 'jifoewjifoew.py'
>>> import_from_physical_path("jifoewjifoew.p")
...
AttributeError: 'NoneType' object has no attribute 'loader'
```

diff --git a/magicalimport/tests/test_notfound.py b/magicalimport/tests/test_notfound.py
new file mode 100644
index 0000000..3a38fb3
--- /dev/null
+++ b/magicalimport/tests/test_notfound.py
@@ -0,0 +1,60 @@
+import unittest
+import os.path
+
+here = os.path.dirname(os.path.abspath(__file__))
+
+
+class ImportModuleTests(unittest.TestCase):
+    def _callFUT(self, *args, **kwargs):
+        from magicalimport import import_module
+
+        return import_module(*args, **kwargs)
+
+    def test_target_file_is_notfound(self):
+        import random
+
+        path = os.path.join(here, "missing{}.py".format(random.random()))
+        with self.assertRaises(ModuleNotFoundError):
+            self._callFUT(path)
+
+    def test_target_module_is_notfound(self):
+        import random
+
+        path = os.path.join(here, "missing{}".format(random.random()))
+        with self.assertRaises(ModuleNotFoundError):
+            self._callFUT(path)
+
+
+class ImportSymbolTests(unittest.TestCase):
+    def _callFUT(self, *args, **kwargs):
+        from magicalimport import import_symbol
+
+        kwargs["silent"] = True
+        return import_symbol(*args, **kwargs)
+
+    def test_target_file_is_notfound(self):
+        import random
+
+        path = os.path.join(here, "missing{}.py:foo".format(random.random()))
+        with self.assertRaises(ModuleNotFoundError):
+            self._callFUT(path)
+
+    def test_target_module_is_notfound(self):
+        import random
+
+        path = os.path.join(here, "missing{}:foo".format(random.random()))
+        with self.assertRaises(ModuleNotFoundError):
+            self._callFUT(path)
+
+    def test_target_module_has_not_member(self):
+        with self.assertRaises(ImportError) as c:
+            self._callFUT("collections:foo")
+
+    def test_target_module_has_not_member(self):
+        import os.path
+
+        path = os.path.join(here, "../../examples/a/b/c/foo.py")
+        self.assertTrue(os.path.exists(path))
+
+        with self.assertRaises(ImportError):
+            self._callFUT("{}:foo".format(path))

pip install -e .[testing]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
importlib-metadata==4.8.3
iniconfig==1.1.1
-e git+https://github.com/podhmo/magicalimport.git@8af8157954b6dc66b94a41b1daaed40c9ce86321#egg=magicalimport
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
tomli==1.2.3
typing_extensions==4.1.1
zipp==3.6.0

name: magicalimport
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/magicalimport

magicalimport/tests/test_notfound.py::ImportModuleTests::test_target_file_is_notfound magicalimport/tests/test_notfound.py::ImportSymbolTests::test_target_file_is_notfound magicalimport/tests/test_notfound.py::ImportSymbolTests::test_target_module_has_not_member magicalimport/tests/test_notfound.py::ImportSymbolTests::test_target_module_is_notfound
magicalimport/tests/test_notfound.py::ImportModuleTests::test_target_module_is_notfound
magicalimport/__init__.py
magicalimport/__init__.py