Python user modules path

Python Module Search Path

Summary: in this tutorial, you’ll learn how the module search path works in Python when you import a module into a program.

Introduction to Python module search path

When you import a module in a program:

import moduleCode language: Python (python)

Python will search for the module.py file from the following sources:

  • The current folder from which the program executes.
  • A list of folders specified in the PYTHONPATH environment variable, if you set it before.
  • An installation-dependent list of folders that you configured when you installed Python.

Python stores the resulting search path in the sys.path variable that comes from the sys module.

The following program shows the current module search path:

import sys for path in sys.path: print(path) Code language: Python (python)

Here’s a sample output on Windows:

D:\Python\ C:\Program Files\Python38\python38.zip C:\Program Files\Python38\DLLs C:\Program Files\Python38\lib C:\Program Files\Python38 C:\Users\PythonTutorial\AppData\Roaming\Python\Python38\site-packages C:\Program Files\Python38\lib\site-packages Code language: Shell Session (shell)

And the following is the sample output on Linux:

/Library/Frameworks/Python.framework/Versions/3.8/bin /Library/Frameworks/Python.framework/Versions/3.8/lib/python38.zip /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8 /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/lib-dynload /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.8/site-packagesCode language: Shell Session (shell)

To make sure Python can always find the module.py , you need to:

  • Place module.py in the folder where the program will execute.
  • Include the folder that contains the module.py in the PYTHONPATH environment variable. Or you can place the module.py in one of the folders included in the PYTHONPATH variable.
  • Place the module.py in one of the installation-dependent folders.
Читайте также:  Birthday Reminders for August

Modifying the Python module search path at runtime

Python allows you to modify the module search path at runtime by modifying the sys.path variable. This allows you to store module files in any folder of your choice.

Since the sys.path is a list, you can append a search-path to it.

The following example adds the d:\modules to the search path and use the recruitment module stored in this folder:

>>> import sys >>> sys.path.append('d:\\modules\\') >>> import recruitment >>> recruitment.hire() Hire a new employee. Code language: JavaScript (javascript)

Summary

  • When you import a module, Python will search for the module file from the folders specified in the sys.path variable.
  • Python allows you to modify the module search path by changing, adding, and removing elements from the sys.path variable.

Источник

How To Set Python Module Search Path To Find Modules

When you want to import a python module library in your python source code, you need first to make the python module library importable by adding the module package path in the PYTHONPATH system environment variable. You can also add the python module package path to the python module search path at runtime in python source code. This example will show you how to do it.

1. Add Python Module Package Path In System Environment Variable PYTHONPATH.

Suppose your python module is saved in folder /tmp. We will add /tmp folder in the PYTHONPATH environment variable value.

    Open a terminal and go to the user home directory use cd ~ command.

$ ls -al . -rw-r--r--@ 1 zhaosong staff 1176 Apr 30 09:15 .bash_profile .

2. Display Python Library Search Path In Python Source Code.

    Run into python interactive console in a terminal.

$ python3 Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>
>>> import sys >>> for path in sys.path: . print(path) . /tmp /Users/zhaosong/anaconda3/lib/python36.zip /Users/zhaosong/anaconda3/lib/python3.6 /Users/zhaosong/anaconda3/lib/python3.6/lib-dynload /Users/zhaosong/.local/lib/python3.6/site-packages /Users/zhaosong/anaconda3/lib/python3.6/site-packages /Users/zhaosong/anaconda3/lib/python3.6/site-packages/aeosa
  1. Python sys.path.append function can append directory to the end of python library search directory.
>>> sys.path.append('/abc') >>> >>> >>> for line in sys.path: . print(line) . /tmp /Users/zhaosong/anaconda3/lib/python36.zip /Users/zhaosong/anaconda3/lib/python3.6 /Users/zhaosong/anaconda3/lib/python3.6/lib-dynload /Users/zhaosong/.local/lib/python3.6/site-packages /Users/zhaosong/anaconda3/lib/python3.6/site-packages /Users/zhaosong/anaconda3/lib/python3.6/site-packages/aeosa /abc

4. Append Exist Module Library Directory To Python Library Search Directory.

  1. Python module’s __file__ attribute returns the module file saved directory. You can append that directory to the python library search path as below.
>>> import sys, os # os.__file__ will return the os module directory. >>> sys.path.append(os.__file__) >>> >>> >>> for line in sys.path: . print(line) . /tmp /Users/zhaosong/anaconda3/lib/python36.zip /Users/zhaosong/anaconda3/lib/python3.6 /Users/zhaosong/anaconda3/lib/python3.6/lib-dynload /Users/zhaosong/.local/lib/python3.6/site-packages /Users/zhaosong/anaconda3/lib/python3.6/site-packages /Users/zhaosong/anaconda3/lib/python3.6/site-packages/aeosa /abc /Users/zhaosong/anaconda3/lib/python3.6/os.py

5. Question & Answer.

5.1 How can I add another python source directory in the Python search path for a large python project.

  1. My team just handle an old python project from another team, the python project is so large, there are a lot of python source files in the python project. Our development environment is Linux and no IDE, only in the command line. And when I run the python script with the command python abc.py it prompts the error ImportError: no module named com.test_module. And there is a lot of such kind of errors in other python scripts. All the old python project files are saved in a folder like /codebase/old_python_project. And there are a lot of subfolders in the project base folder. How can I make python search all the modules in the project folder and it’s subfolders to fix the import error? Thanks.
  2. You can add your existing python project folder in the PYTHONPATH system environment variable to fix your issue. You can also use the function sys.path.append(‘/codebase/old_python_project’) in your python script source code and then can import the python modules. If you want to add all the project subfolders in the python module search path, you can reverse loop your project folder and when you reach it’s subfolder then you can call the sys.path.append() function to add the subfolder to the python module search path, you can try it.
import os, sys def reverse_add_python_module_search_path(module_dir): files_array = [] files_array = os.listdir(module_dir) for file in files_array: if os.path.isdir(file): sys.path.append(file) reverse_add_python_module_search_path(file)

Источник

Чтобы управлять нашими ресурсами, мы всегда должны знать об их местонахождении. Путь к файлу или модулю в вашей локальной системе важен для программирования. Кроме того, чтобы оптимизировать параметры хранения, мы должны иметь общее представление о файловых системах.

В разных операционных системах методы поиска файла или приложения могут различаться. В Python существует несколько способов найти путь или каталог, в котором нужный модуль может быть сохранен для последующего использования или импорта.

В этой статье мы рассмотрим различные методы, которые вы можете использовать для поиска определенных файлов и папок в вашей локальной системе.

Тип местоположения файла или модуля может быть описан как абсолютный путь или относительный путь. Например, это местоположение: C:\Users\SHREYA\Programs\Python311\find path.py — это абсолютный путь к файлу «find path.py». Здесь текущий рабочий каталог для этого конкретного файла: C:\Users\SHREYA, а его относительный путь, который используется для ссылки на файлы, связанные с текущим каталогом, будет: Programs\Python311\find path.py.

Модули — это не что иное, как специальные файлы, которые содержат предварительно написанный код для встроенных функций, что делает Python одним из самых полезных и простых в освоении языков программирования в мире. Модули — это основа Python, которые представляют собой наборы встроенных функций, облегчающих жизнь программистам во всем мире.

Несмотря на то, что модули и библиотеки Python взаимозаменяемы, библиотеки Python представляют собой набор модулей Python. Вы можете узнать больше о разнице между библиотеками и модулями

Зачем нам нужно искать источники модулей и пути к файлам?

Важно знать, где хранятся наши файлы на нашем локальном компьютере. Это помогает определить абсолютные пути модулей, чтобы избежать конфликтов и правильно прочитать данные.

Нам нужны исходники различных файлов и модулей по следующим причинам:

  • Чтобы манипулировать данными с помощью кода Python, нам нужен PATH файла.
  • Чтобы легко получить доступ к нашим файлам, необходимо знать, как искать каталоги и пути
  • Для чтения и записи в файлы важно их расположение.
  • Python вызывает ошибки, когда не может найти определенные модули
  • Чтобы избежать таких ошибок, как ImportError, когда конфликты могут возникать из-за повторяющихся имен файлов, важно знать, как искать уже существующие системные модули.

Зачем нам нужно искать источники модулей и пути к файлам

В Python есть три простых способа найти расположение исходных кодов модулей. Первый использует «файл‘, который дает абсолютный путь к текущему модулю. Второй метод включает в себя функцию «помощь», которая предоставляет исчерпывающую информацию о модуле, включая его местоположение. Наконец, модуль «sys» можно использовать для вывода списка местоположений, где хранятся все модули Python.

Способ 1: атрибут __file__

Этот атрибут даст вам абсолютный путь к текущему файлу, который вы запускаете. Давайте найдем модуль numpy в нашем коде, запустив следующий код в вашем терминале Python.

>>>import numpy #import the required module >>>print("The PATH OF THE CURRENT MODULE IS wp-block-syntaxhighlighter-code "> 
The PATH OF THE CURRENT MODULE IS=C:\Users\SHREYA\AppData\Local\Programs\Python\Python311\Lib\site-packages\numpy\__init__.py

Способ 2: функция «помощь»

В этом методе мы будем импортировать случайный модуль в наш код и определять его местоположение, используя помощь.

>>>import random >>>print(help(random))

Вы получите огромный вывод со всей информацией об этом модуле. И в самом конце вы обнаружите, что его местоположение упоминается.

Help on module random: NAME random - Random variable generators. MODULE REFERENCE The following documentation is automatically generated from the Python source files. It may be incomplete, incorrect or include features that are considered implementation detail and may vary between Python implementations. When in doubt, consult the module reference at the location listed above. . All other information FILE c:\users\shreya\appdata\local\programs\python\python311\lib\random.py

Похоже на: Как проверить версию установленных модулей Python.

Способ 3: модуль «sys»

Этот метод покажет место, где хранятся все модули Python. Это также один из самых распространенных методов, который используется.

>>>import sys >>>print("The location is wp-block-syntaxhighlighter-code "> 
The location is= ['C:\\Users\\SHREYA\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\idlelib', 'C:\\Users\\SHREYA\\AppData\\Local\\Programs\\Python\\Python311\\python311.zip', 'C:\\Users\\SHREYA\\AppData\\Local\\Programs\\Python\\Python311\\Lib', 'C:\\Users\\SHREYA\\AppData\\Local\\Programs\\Python\\Python311\\DLLs', 'C:\\Users\\SHREYA\\AppData\\Local\\Programs\\Python\\Python311', 'C:\\Users\\SHREYA\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages']

Вывод показывает список каталогов, в которых Python ищет модули. Каждая строка в списке представляет собой путь к каталогу, в котором Python будет искать модули при выполнении оператора «импорт».

Демистификация модулей и путей Python

С помощью этого руководства мы раскрыли тайну источников и путей модулей Python. Мы рассмотрели, почему они имеют решающее значение и как их идентифицировать, используя три простых метода. Теперь в ваших руках управление каталогами и локальным хранилищем. Готовы ли вы вывести эффективность программирования на Python на новый уровень?

Источник

Оцените статью