Вопрос или проблема
Я 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
для смены текущей рабочей директории на ту, где находится скрипт, или же создавать батч-файлы для автоматизации этого процесса.
Применение: Для решения вашей задачи, исполняйте скрипты, используя один из следующих подходов:
-
Явно указывайте полный путь к скрипту при его запуске через Python. Это гарантирует, что Python сможет найти и исполнить нужный файл, независимо от вашей текущей директории.
-
Создайте батч-файл (*.bat), который будет менять директорию и запускать скрипт. Это может быть удобно, если вам часто требуется запускать скрипт из разных мест:
@echo off
cd /d "C:\Program Files\Python35\Scripts"
python hex2bin.py %*
- Используйте виртуальные окружения (virtual environments), которые помогут лучше управлять зависимостями и путями в ваших Python-проектах, делая их более переносимыми и избавляя от конфликта версий модулей.
Такой подход к организации работы с Python-скриптами позволит вам избежать ошибок, связанных с поиском файлов, и облегчит процесс автоматизации задач в операционной системе Windows.