Python как язык обладает большой гибкостью и масштабируемостью. Возможность группировать файлы в пакет, а затем группировать пакеты в библиотеку делает Python очень мощным. Однако контроль доступности файлов Python также является важной задачей. Для этого в Python существуют переменные окружения, например pythonpath.
В этой статье мы подробно рассмотрим переменные окружения Python и разберемся с переменной Pythonpath. Позже мы сравним ее с переменными пути в других языках. Итак, давайте приступим.
Что такое PYTHONPATH?
Переменная pythonpath – это переменная окружения, в которой хранятся пути ко всем каталогам, в которых интерпретатор должен искать модули или пакеты, запрошенные для импорта.
Pythonpath в основном работает на основе sys.path библиотеки sys. sys.path – это список путей, по которым интерпретатор должен искать модули или пакеты, которые были запрошены для импорта. Программа pythonpath добавляет все указанные в ней каталоги к списку sys.path, предоставляемому библиотекой sys.
Каталоги, присутствующие в pythonpath
При загрузке Python в систему в pythonpath по умолчанию добавляется каталог, в котором хранятся все модули, входящие в стандартную библиотеку, и все библиотеки, глобально установленные в системе.
Второй путь, который добавляется в pythonpath, – это расположение каталога, в котором находится созданный вами файл. Это позволяет интерпретатору обращаться к модулям и пакетам, находящимся в том же относительном положении, что и файл Python, в котором вы программируете.
Кроме этого, в список sys.path можно добавить и другие каталоги, в которых интерпретатор должен искать модули и пакеты. Это можно сделать с помощью следующего блока кода.
import sys sys.path.append("path/to/directory")
Сравнение с переменной окружения PATH в других языках
Переменные path в других языках служат той же цели, что и переменная pythonpath. Она используется для указания места поиска импортируемых модулей и пакетов. В языке C/C++ для доступа к переменной path используется метод getenv(). Переменная path может быть одинаковой для многих языков. Она даже одинакова для языка Python. Но pythonpath обеспечивает большую универсальность.
Важность установки PYTHONPATH
Импорт других модулей и пакетов, чтобы не писать один и тот же код повторно, удовлетворяет свойству DRY (Don’t repeat yourself) языка ООП. Установка переменной pythonpath помогает упорядочить файлы и легко получить доступ к нужному файлу. Она помогает изолировать программу от различных версий одних и тех же зависимостей в отдельном виртуальном окружении.
Способы получения PYTHONPATH в Shell
Использование команды echo
Команда echo – это оператор печати в сценариях оболочки. Она присутствует как в терминале, так и в командной строке. Большинство операционных систем имеют команду echo. С ее помощью можно выводить текст или значения переменных в самом терминале. Мы собираемся заставить ее выводить pythonpath. Давайте посмотрим, как с помощью команды echo получить значение переменной pythonpath.
echo $PYTHONPATH
![](https://pythonturbo.ru/wp-content/uploads/2023/11/echo-pythonpath.png-1024x483.webp)
![](https://pythonturbo.ru/wp-content/uploads/2023/11/echo-pythonpath.png-1024x483.webp)
Примечание: Если попытаться вывести pythonpath прямо сейчас, то в большинстве систем это ничего не даст, поскольку pythonpath не установлен по умолчанию в большинстве систем. О том, как установить pythonpath, мы узнаем далее в статье.
Использование команды python
Попробуем получить pythonpath с помощью команды python в оболочке.
python -c "import os;pythonpath = os.getenv('PYTHONPATH','');print(os.getenv('PYTHONPATH'))"
![](https://pythonturbo.ru/wp-content/uploads/2023/11/pythonnpath-using-python-command.png-1024x657.webp)
![](https://pythonturbo.ru/wp-content/uploads/2023/11/pythonnpath-using-python-command.png-1024x657.webp)
Используя флаг -c, мы выполнили Python-скрипт непосредственно в оболочке. Мы проверили наличие pythonpath с помощью модуля os.
Использование модуля os в Python
Модуль os может использоваться для работы с различными операциями, связанными с операционной системой. С помощью модуля os можно получить доступ к переменной pythonpath.
import os pythonpath = os.getenv('PYTHONPATH','') pythonpath+='/Users/kundansingh/opt/anaconda3/lib/python39.zip' os.environ['PYTHONPATH']=pythonpath print(os.getenv('PYTHONPATH'))
![](https://pythonturbo.ru/wp-content/uploads/2023/11/pythonpath-using-os-module.png-1024x443.webp)
![](https://pythonturbo.ru/wp-content/uploads/2023/11/pythonpath-using-os-module.png-1024x443.webp)
Сначала вы получите доступ к pythonpath с помощью функции os.getenv. Затем вы добавите в него те пути, которые хотите добавить. После этого вы установите pythonpath в словаре os.environ.
Примечание: Вы не можете изменить pythonpath, используя модуль os постоянно. Единственный способ получить переменную окружения pythonpath и изменить ее – это команды shell/bash, такие как echo и export.
Установка PYTHONPATH
В большинстве систем переменная pythonpath не задана по умолчанию. Приходится устанавливать его вручную с помощью команд оболочки. В основном существует два способа установки переменной pythonpath. Давайте рассмотрим оба способа.
Использование команды export
Команда export позволяет получить доступ к переменным окружения и установить или обновить их значение. Она очень проста в использовании. С ее помощью можно установить переменную pythonpath.
export PYTHONPATH="/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9:$PYTHONPATH"
![](https://pythonturbo.ru/wp-content/uploads/2023/11/export-command-to-set-pythonpath.png-1024x513.webp)
![](https://pythonturbo.ru/wp-content/uploads/2023/11/export-command-to-set-pythonpath.png-1024x513.webp)
Примечание: Использование команды export устанавливает pythonpath только для конкретной сессии оболочки. Она является постоянной, но все же временной. Поэтому мы будем использовать bash для фактической установки переменной pythonpath, которую мы можем использовать в любое время.
Использование файла .bashrc
Смените текущий каталог на домашний, а затем откройте файл .bashrc, выполнив команду nano .bachrc. После этого напишите в нем следующую строку кода.
export PYTHONPATH="/Users/kundansingh/opt/anaconda3/lib/python39.zip"
Теперь установите источник в качестве .bashrc , и ваш pythonpath будет установлен.
Общие проблемы и решения
- Наиболее распространенной проблемой, возникающей при работе с pythonpath, является неправильный синтаксис. Ключевым местом, где большинство программистов допускают ошибки, является разделение путей с помощью “:” в macOS или Linux и с помощью “;” в Windows.
- Другой момент, который может вызвать проблему, – это тип пути. При работе с pythonpath предпочтительнее использовать абсолютный путь, а относительный путь зависит от конкретной программы и может вызвать проблемы в других программах.
- Убедитесь, что вы используете новую сессию оболочки каждый раз, когда работаете над новым проектом, чтобы избежать использования неправильных зависимостей.
- Убедитесь, что вы изменяете pythonpath в правильном окружении.
Заключение
Это все, что вам нужно знать о переменной pythonpath. Это не такая уж большая вещь и очень простая для понимания. Но она предоставляет программистам большую гибкость. Обязательно продолжайте экспериментировать с ней и посмотрите, чего можно добиться с ее помощью. Продолжайте изучать новые вещи, ведь именно это делает программиста хорошим программистом.
Перевод статьи «How to Get the Pythonpath in Shell?».