Get module dir python

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

В разных операционных системах методы поиска файла или приложения могут различаться. В 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. Вы можете узнать больше о разнице между библиотеками и модулями

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

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

Читайте также:  Html и svg ссылка

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

  • Чтобы манипулировать данными с помощью кода 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 на новый уровень?

Источник

Where does Python look for modules?¶

Let’s say we have written a Python module and saved it as a_module.py , in a directory called code .

We also have a script called a_script.py in a directory called scripts .

We want to be able to import the code in a_module.py to use in a_script.py . So, we want to be able to put his line in a_script.py :

The module and script might look like this:

def func(): print("Running useful function")
import a_module a_module.func()

At the moment, a_script.py will fail with:

$ python3 scripts/a_script.py Traceback (most recent call last): File "scripts/a_script.py", line 1, in import a_module ModuleNotFoundError: No module named 'a_module' 

When Python hits the line import a_module , it tries to find a package or a module called a_module . A package is a directory containing modules, but we will only consider modules for now. A module is a file with a matching extension, such as .py . So, Python is looking for a file a_module.py , and not finding it.

You will see the same effect at the interactive Python console, or in IPython:

>>> import a_module Traceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'a_module' 

Python looks for modules in “sys.path”¶

Python has a simple algorithm for finding a module with a given name, such as a_module . It looks for a file called a_module.py in the directories listed in the variable sys.path .

>>> import sys >>> type(sys.path) >>> for path in sys.path: . print(path) . /Users/brettmz-admin/dev_trees/psych-214-fall-2016/sphinxext /usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip /usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7 /usr/local/Cellar/python/3.7.2_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload /Users/brettmz-admin/Library/Python/3.7/lib/python/site-packages /Users/brettmz-admin/dev_trees/grin /Users/brettmz-admin/dev_trees/rmdex /usr/local/lib/python3.7/site-packages 

The a_module.py file is in the code directory, and this directory is not in the sys.path list.

Because sys.path is just a Python list, like any other, we can make the import work by appending the code directory to the list.

>>> import sys >>> sys.path.append('code') >>> # Now the import will work >>> import a_module 

There are various ways of making sure a directory is always on the Python sys.path list when you run Python, including:

  • put the directory into the contents of the PYTHONPATH environment variable – Using PYTHONPATH
  • make the module part of an installable package, and install it – see: making a Python package.

As a crude hack, you can also put your code directory on the Python sys.path at the top of the files that need it:

import sys sys.path.append('code') import a_module a_module.func()
$ python3 scripts/a_script_with_hack.py Running useful function 

The simple append above will only work when running the script from a directory containing the code subdirectory. For example:

$ mkdir another_dir $ cd another_dir $ python3 ../scripts/a_script_with_hack.py Traceback (most recent call last): File "../scripts/a_script_with_hack.py", line 4, in import a_module ModuleNotFoundError: No module named 'a_module' 

This is because the directory code that we specified is a relative path, and therefore Python looks for the code directory in the current working directory.

To make the hack work when running the code from any directory, you could use some path manipulation on the The “__file__” variable :

from os.path import dirname, abspath, join import sys # Find code directory relative to our directory THIS_DIR = dirname(__file__) CODE_DIR = abspath(join(THIS_DIR, '..', 'code')) sys.path.append(CODE_DIR) import a_module a_module.func()

Now the module import does work from another_dir :

$ python3 ../scripts/a_script_with_better_hack.py Running useful function 

Источник

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