Пути Cygwin для Windows Python - PullRequest
       5

Пути Cygwin для Windows Python

3 голосов
/ 10 ноября 2011

У меня есть доступ к машине с минимальной установкой Cygwin и версии Python для Windows.Мне нужно запустить там несколько скриптов на python, однако для python требуются пути Windows.Я могу использовать cygpath -w в аргументах, которые я предоставляю, однако дальнейшие пути unix / cygwin включены во многие другие скрипты, которые впоследствии вызываются.

Есть ли способ сообщить Windows Python, что он принимает Unix / Cygwin?пути?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Нет, в Windows Python нет поддержки для путей Cygwin, но у Cygwin есть собственный Python.Если вы не можете добавить это к существующей установке Cygwin, возможно, вы захотите выполнить установку Cygwin для конкретного пользователя в каталог, в который вам разрешено писать.

Существует способ получить ограниченнуюПоддержка пути Cygwin для программ Windows, хотя я подозреваю, что это не вариант для вас: установите Cygwin в C:\, чтобы Cygwin /path был эквивалентен C:\path.Это основывается на том факте, что Windows API (хотя и не все программы Windows) принимает как обратную, так и косую черту как разделители пути, и что он рассматривает абсолютные пути без буквы диска как ссылку на системный диск (т. Е. C:).

Очевидно, что это не будет работать для путей Cygwin, которые указывают на другие диски (через таблицу монтирования Cygwin).Он также не будет работать для любых программ, которые используют / (вместо -) для ввода параметров, которые включают большинство встроенных инструментов командной строки Windows.Но он обычно работает для кроссплатформенных инструментов, таких как Python.

Еще один вариант - использовать MSYS вместо Cygwin, который является развилком старой версии Cygwin, причем его наиболее отличительной особенностью является то, что он автоматическипереводит пути POSIX в пути Windows при вызове программ Windows.Однако обратите внимание, что у этого подхода есть свои подводные камни, потому что не всегда ясно, является ли аргумент путем или нет.Следовательно, иногда он не может перевести путь или неправильно изменить аргумент, который не является путем.

1 голос
/ 22 ноября 2018

Создайте файл с именем wpython и сохраните его где-нибудь, например, в /bin:

#!/bin/bash

path=$1
shift # Remove filepath from other args to pass them further
python.exe $(cygpath -w $path) $@ # Call python.exe with Windows path and passed args

Итак, используйте его так:

#!/usr/bin/env wpython
print(123)

Не забудьтесделать оба файла исполняемыми с: chmod +x filename

PS: Soultion на основе этого сообщения в блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...