[파이썬] `sys.path`: 모듈 검색 경로

When working with Python, you may come across situations where you need to import external modules or packages into your code. To import these modules successfully, Python needs to know where to look for them. This is where sys.path comes into play.

sys.path is a Python list that contains directories where Python searches for modules. When you attempt to import a module, Python checks each directory in sys.path one by one until it finds the module or raises an ImportError if the module is not found.

Understanding sys.path

To access and manipulate sys.path, you first need to import the sys module using the following code:

import sys

Once imported, you can view the current list of directories in sys.path by printing it:

print(sys.path)

The output will be a list of directories where Python searches for modules.

Modifying sys.path

In some cases, you may need to add a directory to sys.path to ensure that Python can find your modules. There are a few ways to do this:

  1. Appending to sys.path: This adds a directory to the end of the list, ensuring it is searched last. You can use the following code:

    sys.path.append('/path/to/directory')
    
  2. Prepending to sys.path: This adds a directory at the beginning of the list, making it the first place Python searches for modules. You can use the following code:

    sys.path.insert(0, '/path/to/directory')
    
  3. Setting sys.path: This completely replaces the existing sys.path list with a new list of directories. Use this approach with caution, as you may inadvertently remove important directories from the search path:

    sys.path = ['/path/to/directory1', '/path/to/directory2']
    

A practical example

Let’s say you have a Python script located at /home/user/my_script.py that relies on a custom module located at /home/user/my_module.py. However, Python is unable to import my_module because it doesn’t know where to find it.

To solve this, you can modify sys.path in my_script.py to include the directory where my_module.py is located. This can be done as follows:

import sys
sys.path.append('/home/user')

import my_module

By appending /home/user to sys.path, you ensure that Python searches for the my_module module in that directory.

Conclusion

Understanding and effectively using sys.path is essential when working with external modules and packages in Python. By manipulating this list, you can control where Python searches for modules, ensuring that your code can import them successfully.