Python bindings for the winpty pseudo terminal library. It allows to create and communicate with Windows processes that print outputs and recieve inputs via console input and output pipes.
Since mid November/2017, Anaconda, Inc has stopped funding Spyder development, after doing it for the past 18 months. Because of that, development will focus from now on maintaining Spyder 3 at a much slower pace than before.
If you want to contribute to maintain Spyder, please consider donating at
https://opencollective.com/spyder
We appreciate all the help you can provide us and can't thank you enough for supporting the work of Spyder devs and Spyder development.
If you want to know more about this, please read this page.
To compile pywinpty sources, you must have Cython and MSYS2/MinGW-w64 installed (Alongside the corresponding Python MSVC Runtime). You must also have Winpty's C header and library files available on your include path.
You can install this library by using conda or pip package managers, as it follows:
Using conda (Recommended):
conda install pywinptyUsing pip:
pip install pywinptyTo build from sources, we recommend to use conda to install the following packages:
conda install --file requirements.txtMake sure that you are installing packages from the default channel. If you don't want to use conda, you will need to have the MSYS2/MinGW-w64-flavoured GCC compiler available on your PATH.
You will need to setup the following environment variables:
set LIBRARY_INC=<Path to your anaconda installation>\envs\<environment name>\Library\include
set LIBRARY_LIB=<Path to your anaconda installation>\envs\<environment name>\Library\libset LIBRARY_INC=<Path to the folder that contains wintpty headers>
set LIBRARY_LIB=<Path to the folder that contains wintpty library files>To test your compilation environment settings, you can build pywinpty Cython sources locally, by executing:
python setup.py build_ext -i --compiler=mingw32If everything works correctly, you can install winpty by using pip:
pip install -U .Pywinpty offers a single python wrapper around winpty library functions. This implies that using a
single object (winpty.PTY) it is possible to access to all functionallity, as it follows:
# High level usage using `spawn`
from winpty import PtyProcess
proc = PtyProcess.spawn('python')
proc.write('print("hello, world!")\r\n')
proc.write('exit()\r\n')
while proc.isalive():
print(proc.readline())
# Low level usage using the raw `PTY` object
from winpty import PTY
# Start a new winpty-agent process of size (cols, rows)
cols, rows = 80, 25
process = PTY(cols, rows)
# Spawn a new console process, e.g., CMD
process.spawn(ur'C:\windows\system32\cmd.exe')
# Read console output (Unicode)
process.read()
# Write input to console (Unicode)
process.write(u'Text')
# Resize console size
new_cols, new_rows = 90, 30
process.set_size(new_cols, new_rows)
# Know if the process is alive
alive = process.isalive()
# Close console pipes
process.close()
# End winpty-agent process
del processVisit our CHANGELOG file to know more about our new features and improvements.
We follow PEP8 and PEP257 for pure python packages and Cython/VS to compile extensions. Feel free to send a PR or create an issue if you have any problem/question.
Support us with a monthly donation and help us continue our activities.
Become a sponsor to get your logo on our README on Github.