Постоянное изменение Python Path (Пути Python) с помощью PYTHONPATH
В то время как изменение sys.path внутри скрипта полезно для временных изменений, вам может потребоваться добавить каталог в Python path (путь Python) для всех ваших сеансов Python или для конкретного проекта, не изменяя отдельные скрипты. Это можно сделать, установив переменную окружения PYTHONPATH.
Переменная окружения PYTHONPATH — это список каталогов, которые Python добавляет в sys.path при запуске.
Чтобы установить переменную окружения PYTHONPATH для текущего сеанса терминала, вы можете использовать команду export.
Давайте удалим строку sys.path.append() из use_custom_module.py и вместо этого будем использовать PYTHONPATH.
Откройте use_custom_module.py в редакторе WebIDE и удалите следующие строки:
## Get the absolute path to the custom modules directory
custom_modules_path = os.path.join(os.path.dirname(__file__), 'my_custom_modules')
## Add the custom modules directory to sys.path
sys.path.append(custom_modules_path)
Теперь файл use_custom_module.py должен выглядеть так:
import sys
import os
## Now you can import my_module
import my_module
message = my_module.greet("LabEx User")
print(message)
## Optional: Print sys.path again to see the added directory
print("\nUpdated sys.path:")
print(sys.path)
Сохраните файл.
Теперь попробуйте запустить скрипт без установки PYTHONPATH:
python use_custom_module.py
Скорее всего, вы получите ModuleNotFoundError, потому что Python не может найти my_module.
Traceback (most recent call last):
File "/home/labex/project/use_custom_module.py", line 5, in <module>
import my_module
ModuleNotFoundError: No module named 'my_module'
Теперь давайте установим переменную окружения PYTHONPATH в терминале, чтобы включить наш каталог пользовательских модулей (custom modules directory). Убедитесь, что вы находитесь в каталоге /home/labex/project.
export PYTHONPATH="/home/labex/project/my_custom_modules:$PYTHONPATH"
Эта команда добавляет /home/labex/project/my_custom_modules в начало переменной PYTHONPATH. $PYTHONPATH в конце гарантирует, что все существующие каталоги в PYTHONPATH будут сохранены.
Теперь снова запустите скрипт use_custom_module.py в том же сеансе терминала:
python use_custom_module.py
Вы должны увидеть вывод, указывающий на то, что модуль был найден и выполнен:
Hello, LabEx User from my_module!
Updated sys.path:
['/home/labex/project', '/home/labex/project/my_custom_modules', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/labex/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages']
Обратите внимание, что /home/labex/project/my_custom_modules теперь включен в sys.path, потому что мы установили переменную окружения PYTHONPATH.
Установка PYTHONPATH в терминале с помощью export влияет только на текущий сеанс терминала. Чтобы сделать изменение постоянным, обычно добавляют команду export в файл запуска вашей оболочки (shell) (например, ~/.bashrc, ~/.zshrc). Однако для этой лабораторной работы достаточно установить ее в текущем сеансе, чтобы продемонстрировать концепцию.