Python show modules imported

Python show modules imported

Don’t learn to code. Code to learn!

  • Python — Обзор
  • Основы синтаксиса Python
  • Операторы в Python
  • Типы данных в Python
  • Условные конструкторы в Python
  • Циклы в Python
  • Функции в Python
  • Функциональное программирование в Python
  • ООП в Python
  • Модули в Python
  • Работа с файлами в Python
  • Обработка исключительных ситуаций в Python

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

Команда import в Python:

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

import module_1[, module_2[. module_N]

Когда интерпретатор Python встречает команду import, он импортирует (дает доступ) этот модуль, если он присутствует в пути поиска Python. Путь поиска Python это список директорий, в которых интерпретатор производит поиск перед попыткой загрузить модуль. Например, чтобы использовать модуль math следует написать:

import math # Используем функцию sqrt из модуля math print (math.sqrt(9)) # Печатаем значение переменной pi, определенной в math print (math.pi)

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

Команда from . import в Python

Команда from . import позволяет вам импортировать не весь модуль целиком, а только определенное его содержимое. Например:

# Импортируем из модуля math функцию sqrt from math import sqrt # Выводим результат выполнения функции sqrt. # Обратите внимание, что нам больше незачем указывать имя модуля print (sqrt(144)) # Но мы уже не можем получить из модуля то, что не импортировали print (pi) # Выдаст ошибку

Выражение from . import не импортирует весь модуль, а только предоставляет доступ к конкретным объектам, которые мы указали.

Читайте также:  Php fpm open basedir

Команда from . import * в Python:

В Python так же возможно импортировать всё (переменные, функции, классы) за раз из модуля, для этого используется конструкция from . import *. Например:

from math import * # Теперь у нас есть доступ ко всем функция и переменным, определенным в модуле math print (sqrt(121)) print (pi) print (e)

Однако это конструкцию следует использовать с осторожностью, поскольку при импортировании нескольких модулей можно запутаться в своем собственном коде.

Местонахождение модулей в Python:

Когда вы импортируете модуль, интерпретатор Python ищет этот модуль в следующих местах:

  1. Директория, в которой находится файл, в котором вызывается команда импорта
  2. Если модуль не найден, Python ищет в каждой директории, определенной в консольной переменной PYTHONPATH.
  3. Если и там модуль не найден, Python проверяет путь заданный по умолчанию

Путь поиска модулей сохранен в системном модуле sys в переменной path. Переменная sys.path содержит все три вышеописанных места поиска модулей.

переменная sys.path в python, python sys.path variable

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

Для того, чтобы получить список всех модулей, установленных на вашем компьютере достаточно выполнить команду:

Через несколько секунд вы получите список всех доступных модулей.

все модули в python, python all modules

Создание своего модуля в Python:

Чтобы создать свой модуль в Python достаточно сохранить ваш скрипт с расширением .py Теперь он доступен в любом другом файле. Например, создадим два файла: module_1.py и module_2.py и сохраним их в одной директории. В первом запишем:

def hello(): print ("Hello from module_1")

А во втором вызовем эту функцию:

from module_1 import hello hello()

Выполнив код второго файла получим:

Функция dir():

Встроенная функция dir() возвращает отсортированный список строк, содержащих все имена, определенные в модуле.

# на данный момент нам доступны лишь встроенные функции dir() # импортируем модуль math import math # теперь модуль math в списке доступных имен dir() # получим имена, определенные в модуле math dir(math)

функция dir python, python dir function

Архитектура программы на Python:

Код на Python может быть организован следующим образом:

  1. Первый уровень это обычные команды на Python.
  2. Команды на Python могут быть собраны в функции.
  3. Функции могут быть частью класса.
  4. Классы могут быть определены внутри модулей.
  5. Наконец, модули могут составляться в пакеты модулей.

Пакеты модулей в Python:

Отдельные файлы-модули с кодом на Python могут объединяться в пакеты модулей. Пакет это директория (папка), содержащая несколько отдельных файлов-скриптов.

Читайте также:  Python subprocess pipe stdout to file

Например, имеем следующую структуру:

В файле inside_file.py определена некая функция foo. Тогда чтобы получить доступ к функции foo, в файле my_file следует выполнить следующий код:

from my_package.inside_file import foo

Так же обратите внимание на наличие внутри директории my_package файла __init__.py. Это может быть пустой файл, который сообщает Python, что данная директория является пакетом модулей. В Python 3.3 и выше включать файл __init__.py в пакет модулей стало необязательно, однако, рекомендуется делать это ради поддержки обратной совместимости.

Источник

modulefinder — Find modules used by a script¶

This module provides a ModuleFinder class that can be used to determine the set of modules imported by a script. modulefinder.py can also be run as a script, giving the filename of a Python script as its argument, after which a report of the imported modules will be printed.

modulefinder. AddPackagePath ( pkg_name , path ) ¶

Record that the package named pkg_name can be found in the specified path.

modulefinder. ReplacePackage ( oldname , newname ) ¶

Allows specifying that the module named oldname is in fact the package named newname.

class modulefinder. ModuleFinder ( path = None , debug = 0 , excludes = [] , replace_paths = [] ) ¶

This class provides run_script() and report() methods to determine the set of modules imported by a script. path can be a list of directories to search for modules; if not specified, sys.path is used. debug sets the debugging level; higher values make the class print debugging messages about what it’s doing. excludes is a list of module names to exclude from the analysis. replace_paths is a list of (oldpath, newpath) tuples that will be replaced in module paths.

Print a report to standard output that lists the modules imported by the script and their paths, as well as modules that are missing or seem to be missing.

Analyze the contents of the pathname file, which must contain Python code.

A dictionary mapping module names to modules. See Example usage of ModuleFinder .

Example usage of ModuleFinder ¶

The script that is going to get analyzed later on (bacon.py):

import re, itertools try: import baconhameggs except ImportError: pass try: import guido.python.ham except ImportError: pass 

The script that will output the report of bacon.py:

from modulefinder import ModuleFinder finder = ModuleFinder() finder.run_script('bacon.py') print('Loaded modules:') for name, mod in finder.modules.items(): print('%s: ' % name, end='') print(','.join(list(mod.globalnames.keys())[:3])) print('-'*50) print('Modules not imported:') print('\n'.join(finder.badmodules.keys())) 

Sample output (may vary depending on the architecture):

Loaded modules: _types: copyreg: _inverted_registry,_slotnames,__all__ re._compiler: isstring,_sre,_optimize_unicode _sre: re._constants: REPEAT_ONE,makedict,AT_END_LINE sys: re: __module__,finditer,_expand itertools: __main__: re,itertools,baconhameggs re._parser: _PATTERNENDERS,SRE_FLAG_UNICODE array: types: __module__,IntType,TypeType --------------------------------------------------- Modules not imported: guido.python.ham baconhameggs 

Источник

Читайте также:  Javascript array get all but last

5 Easy Ways to List Imported Modules in Python

Be on the Right Side of Change

In this article, you’ll learn how to display the imported modules in Python.

As a Python Coder, you will encounter times when you need to view a list of all imported modules possessing a global or local scope. This article answers the question below.

💬 Question: How would we write Python code to display the imported modules?

We can accomplish this task by one of the following options:

  • Method 1: Use pip freeze
  • Method 2: Use List Comprehension
  • Method 3: Use dir()
  • Method 4: Use inspect.getmember() and a Lambda
  • Bonus: Count Number of Imported Modules

Method 1: Use pip freeze

This method displays a list of all imported global module names and versions sorted, by default, in alphabetical order.

Navigate to the terminal window from an IDE and enter the above command. Then, hit the < Enter >key to execute. The output is sent to the terminal.

💡 Note: Your prompt may be different from the example shown above.

Output (snippet)

Your imported global module names and versions may differ from that shown below.

absl-py==1.0.0
anyio==3.5.0
argon2-cffi==21.3.0
argon2-cffi-bindings==21.2.0
arrow==1.2.2
asttokens==2.0.5
astunparse==1.6.3
attrs==18.2.0
Babel==2.10.1
backcall==0.2.0
beautifulsoup4==4.10.0
.
zope.interface==5.4.0]

Method 2: Use List Comprehension

This example uses the sys library with List Comprenehsion to return all imported local module names, by default, in an unsorted list.

import sys results = [m.__name__ for m in sys.modules.values() if m] results = sorted(results) print(results)

This code loops through sys.modules.values() using __name__ (aka a dunder) and determines if the item is a locally scoped module. If so, the module name saves to results .

This code sorts the results variable and saves it back to itself for readability. These results are output to the terminal in list format.

Источник

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