Я не Я точно не знаю, в чем проблема, но вот несколько моментов:
Мое первое предположение — это разница в среде при использовании терминала cygwin и при выполнении bash через командный файл.
При запуске из терминала cygwin выполните команду env
, чтобы увидеть, что такое среда (прошло некоторое время с тех пор, как я использовал Windows, но я подозреваю, что env является частью cygwin или встроен в bash) .
Затем добавьте ту же команду в начало сценария оболочки.
#!/bin/sh
export DISPLAY=:0.0
env
python c:/users/<my directories>/<python-file>.py
Сравните две среды и посмотрите, есть ли различия.
pro-tip: вы можете записать вывод команды env
в файл с env > c:/users/<ваши каталоги>/env1.txt
(затем используйте env2.txt
из вашего сценария оболочки), а затем сравните их с помощью инструмента командной строки diff
. то есть diff env1.txt env2.txt
.
Следующее, что связано, но какой интерпретатор Python выполняется в каждом случае.В вашей системе установлен только один Python? Или может у вас их несколько. Например, вы устанавливали и через cygwin, и через anaconda?
Если у вас их несколько, проверьте, какая версия выполняется с помощью , какой python
в каждом случае.
Какой инструментарий графического интерфейса вы используете. Я не знаком с API winfo_screenwidth()
. Предположительно это обеспечивается какой-то библиотекой/пакетом, который вы используете. Какой это пакет?
Я не уверен насчет мира windows/cygwin, но в мире linux программа может определить, является ли stdin
терминалом. Набор инструментов, который вы используете, может вести себя по-разному в обоих случаях. Если это так, документация по набору инструментов поможет найти эту информацию.
Кроме того, у IIRC есть два способа запуска программы в Windows. Есть стандартный способ, т.е. int main()
и способ с графическим интерфейсом (в данном случае я не помню название основной функции). Я помню, что для некоторых интерпретируемых языков существуют разные двоичные файлы интерпретатора в зависимости от того, какую точку входа вы хотели. Графический интерфейс может начинаться или заканчиваться w
. Например, я думаю, что javaw.exe
— это версия графического интерфейса, а java.exe
— консольная версия (для java). Есть ли аналог Python в Windows?
На самом деле нет. /proc — это файловая система специального назначения, которая предоставляет вам доступ для чтения/изменения некоторых параметров ядра. Он действует как интерфейс к внутренним структурам данных в ядре. Его можно использовать для получения информации о системе и для изменения определенных параметров ядра во время выполнения с помощью sysctl.