diff --git a/lib/ansible/plugins/loader.py b/lib/ansible/plugins/loader.py
index 624eeffb47a..f9c0320d6d0 100644
--- a/lib/ansible/plugins/loader.py
+++ b/lib/ansible/plugins/loader.py
@@ -818,7 +818,7 @@ def _load_plugin_filter():
 
 def _configure_collection_loader():
     if not any((isinstance(l, AnsibleCollectionLoader) for l in sys.meta_path)):
-        sys.meta_path.insert(0, AnsibleCollectionLoader())
+        sys.meta_path.insert(0, AnsibleCollectionLoader(C.config))
 
 
 # TODO: All of the following is initialization code   It should be moved inside of an initialization
diff --git a/lib/ansible/utils/collection_loader.py b/lib/ansible/utils/collection_loader.py
index 7fb64ced552..9a311eb0c54 100644
--- a/lib/ansible/utils/collection_loader.py
+++ b/lib/ansible/utils/collection_loader.py
@@ -4,6 +4,7 @@
 from __future__ import (absolute_import, division, print_function)
 __metaclass__ = type
 
+import os
 import os.path
 import pkgutil
 import re
@@ -11,7 +12,6 @@ import sys
 
 from types import ModuleType
 
-from ansible import constants as C
 from ansible.module_utils._text import to_bytes, to_native, to_text
 from ansible.module_utils.six import iteritems, string_types, with_metaclass
 from ansible.utils.singleton import Singleton
@@ -36,8 +36,11 @@ _collection_qualified_re = re.compile(to_text(r'^(\w+)\.(\w+)\.(\w+)$'))
 
 # FIXME: exception handling/error logging
 class AnsibleCollectionLoader(with_metaclass(Singleton, object)):
-    def __init__(self):
-        self._n_configured_paths = C.config.get_config_value('COLLECTIONS_PATHS')
+    def __init__(self, config=None):
+        if config:
+            self._n_configured_paths = config.get_config_value('COLLECTIONS_PATHS')
+        else:
+            self._n_configured_paths = os.environ.get('ANSIBLE_COLLECTIONS_PATHS', '').split(os.pathsep)
 
         if isinstance(self._n_configured_paths, string_types):
             self._n_configured_paths = [self._n_configured_paths]