Запуск Python-скрипта в папке Scripts из другого рабочего каталога в Windows

Вопрос или проблема

Я pip install-ал библиотеку (intelhex) с Python 3.5.1, которая также размещает несколько скриптов в подкаталоге Scripts установки Python:

>dir "%pythonpath%"\hex2*
 Volume in drive C is System
 Volume Serial Number is 0000-ABCD

 Папка C:\Program Files\Python35\Scripts

09.10.2016  08:13             4.698 hex2bin.py
09.10.2016  08:13             4.563 hex2dump.py
               2 File(s)          9.261 bytes
               0 Dir(s)  55.359.901.696 bytes свободно

Можно предположить, что упомянутый PYTHONPATH в документации по Python на Windows для переменных окружения может использоваться для поиска скриптов, но Python не находит скрипт, если рабочая директория другая:

>python hex2bin.py flash.hex
python: can't open file 'hex2bin.py': [Errno 2] No such file or directory

PYTHONPATH предназначен только как путь поиска для import модулей: https://stackoverflow.com/questions/19917492/how-to-use-pythonpath

Есть ли способ использовать указанный путь в качестве пути поиска для интерпретатора Python?

От: http://pythonhosted.org/IntelHex/part1-3.html#note-for-windows-users

Примечание для пользователей Windows

Обратите внимание, что по историческим причинам библиотека IntelHex не использует setuptools для задачи установки, поэтому мы не создаем exe-оболочки для вспомогательных скриптов, таких как hex2bin.py, bin2hex.py и других, упомянутых в этой документации (см. раздел Convenience Scripts).

Вы можете найти эти скрипты в вашем каталоге Script на Python (обычно C:\PythonXY\Scripts). Вам нужно либо создать пакетный файл для их выполнения, либо использовать интерпретатор Python:

python C:\PythonXY\Scripts\hex2bin.py ...

Сначала убедитесь, что вы сменили директорию на текущую директорию, в которой находится “hex2bin.py”

ошибка, которую вы видите, заставляет меня думать, что вы этого не сделали

python: can’t open file ‘hex2bin.py’: [Errno 2] No such file or directory (вы)

python hex2bin.py

Теперь, если ошибки нет, попробуйте запустить его с аргументами

python hex2bin.py HexFile.hex

Ответ или решение

Теория: Когда вы работаете в Windows и хотите исполнять Python-скрипты, находящиеся в поддиректории "Scripts" вашей установки Python, необходимо правильно указать путь к скрипту или изменить текущую рабочую директорию на ту, где расположен скрипт. PYTHONPATH используется для поиска модулей и пакетов по умолчанию и не предназначен для поиска скриптов, которые вы хотите исполнять напрямую. Поэтому при вызове Python, чтобы исполнить скрипт из другой директории, вам необходимо явно указать полный путь к файлу.

Пример: Предположим, что вы установили библиотеку IntelHex, и вместе с ней установились несколько скриптов в поддиректорию "Scripts" вашей установки Python. Вместо того чтобы запускать скрипт, находясь в другой директории, без указания пути, Python выдаст ошибку, так как не сможет найти файл. Убедитесь, что используете правильный путь к скрипту:

python C:\Program Files\Python35\Scripts\hex2bin.py flash.hex

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

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

  1. Явно указывайте полный путь к скрипту при его запуске через Python. Это гарантирует, что Python сможет найти и исполнить нужный файл, независимо от вашей текущей директории.

  2. Создайте батч-файл (*.bat), который будет менять директорию и запускать скрипт. Это может быть удобно, если вам часто требуется запускать скрипт из разных мест:

@echo off
cd /d "C:\Program Files\Python35\Scripts"
python hex2bin.py %*
  1. Используйте виртуальные окружения (virtual environments), которые помогут лучше управлять зависимостями и путями в ваших Python-проектах, делая их более переносимыми и избавляя от конфликта версий модулей.

Такой подход к организации работы с Python-скриптами позволит вам избежать ошибок, связанных с поиском файлов, и облегчит процесс автоматизации задач в операционной системе Windows.

Оцените материал
Добавить комментарий

Капча загружается...