Як вийти з Windows Python в Cygwin


3

Я встановив Python з бінарними файлами Windows, тому мені потрібно набрати, python -iщоб запустити Python в Cygwin. І коли я виходжу з нього, мені потрібно писати exit(). Це лише незначна проблема, але я все одно хотів би знати, чи можливо це виправити, щоб я міг вийти, використовуючи, Ctrl+Zяк це роблю, коли запускаю Python уcmd


Спробуйте скористатися Ctrl-Dдля виходу.
MattDMo

Вже спробував, і не виходить
зірчастий

Відповіді:


1

Проблема тут полягає в різниці між емуляторами терміналів Cygwin (MinTTY тощо), які намагаються діяти як термінали Linux на користь рідних додатків Cygwin, і емулятором терміналу Windows cmd. Оскільки MinTTY обробляє сигнали по-різному, він не передаватиме Ctrl+ Zяк сигнал EOF Windows Python, тоді як Ctrl+ Dвзагалі не обробляється Windows Python.

Рішення полягає в тому, щоб дотримуватися використання Windows Python в емуляторах терміналу Windows (тобто емуляторі терміналу cmd, який є тим самим, що ви отримуєте, якщо ви запускаєте Windows Python з меню "Пуск" або подібному), а також встановлювати Cygwin Python і використовувати це з Емулятори терміналів Cygwin. Таким чином кожен буде отримувати та обробляти відповідні сигнали правильно.


1

Щоб запустити Windows Python з Cygwin, завжди виконайте це:

$ cygstart python

Ніколи цього не роби:

$ python -i

Це поширюється і на Windows IPython. Завжди робіть це:

$ cygstart ipython

Ніколи цього не роби:

$ ipython -i

Перш ніж ми перейдемо до того, чому все ж поговоримо ${PATH}.

Пітон і ${Path}: Нарешті разом!

Вищенаведена відповідь передбачає, що pythonу вашій нинішній ${PATH}системі є рідною Windows, а не встановленою Cygwin версією Python. Якщо це остання справа, абсолютний шлях вашого Windows Python повинен бути явно пройдений cygstart. Наприклад:

$ cygstart /cygdrive/c/Miniconda3/python.exe

Якщо ви запускаєте Windows Python з будь-яким видом частоти, ви, ймовірно, хочете зробити це остаточним python. Якщо ви встановили популярний дистрибутив Python (наприклад, Anaconda, Miniconda, Enthought Canopy), це означає, що ви. Для цього додайте ${PATH}абсолютний шлях до каталогу, що міститься python.exeпри запуску оболонки (наприклад, в ~/.bashrc). Наприклад:

# Stash this somewhere.
export PATH="/cygdrive/c/Miniconda3:${PATH}"

Що трапилося з python -iабо cmd.exe, Chummer?

Підтримуючи ще одну цілеспрямовану рекомендацію запустити Windows Python через python -iCygwin або python з терміналу, який не є Cygwin, я лише похитаю головою.

Ні. Ні. Ні. В обох випадках ви робите неправильно.

У разі запуску python -iзсередини Cygwin ви втрачаєте здорові прив’язки клавіатури (наприклад, < Вгору > та < Вниз >, щоб перейти через історію відтворення, < Ctrl-D >, щоб припинити REPL) і, можливо, що ще важливіше, буферизація виводу.

У разі запуску pythonвсередині терміналу, який не є Cygwin, ви втрачаєте Cygwin. Ви використовуєте Cygwin з причини - імовірно, тому, що ви віддаєте перевагу сумісності з POSIX і всього, що тягне за собою (наприклад, розумну оболонку) перед звичайною альтернативою Windows.

У чому це таке куріння гаряче cygstart?

Немає підстав кидати Цигвіна. Однак є всі підстави запустити вбудовану програму Windows, а отже, Windows Python з Cygwin як рідний процес Windows, а не як сумісний з POSIX процесом Cygwin. Що це не так.

Введіть cygstart.

Ця стандартна утиліта Cygwin перевантажена для інтерфейсу різними надзвичайно цікавими способами з рідними програмами Windows, шляхами та URI. З нашою метою передача cygstartімені команди у поточному виконанні ${PATH}цієї команди як рідний процес Windows, зберігаючи синтаксис та семантику оболонки Windows у присутності Cygwin.

тл; д-р

Програми для рідних Windows, включаючи Windows Python та IPython, завжди повинні запускатися з Cygwin за допомогою cygstartкоманди.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.