classification
Title: Import of _pyio module failed on cygwin
Type: behavior Stage: resolved
Components: IO, Library (Lib) Versions: Python 3.7
process
Status: closed Resolution: duplicate
Dependencies: Superseder: _pyio module broken on Cygwin / setmode not usable
View: 28459
Assigned To: Nosy List: Matúš Valo, christian.heimes, erik.bray, masamoto, zach.ware
Priority: low Keywords:

Created on 2017-12-12 11:14 by Matúš Valo, last changed 2018-03-23 20:05 by berker.peksag. This issue is now closed.

Messages (9)
msg308115 - (view) Author: Matúš Valo (Matúš Valo) * Date: 2017-12-12 11:14
When trying to impor _pyio from python3 in Cygwin, import fails with exception:
$ python3
Python 3.6.3 (default, Oct 31 2017, 19:00:36)
[GCC 6.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import _pyio
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.6/_pyio.py", line 17, in <module>
    from msvcrt import setmode as _setmode
ModuleNotFoundError: No module named 'msvcrt'

This issue is breaking cherrypy server (cheroot component):
https://github.com/cherrypy/cheroot/blob/86c6b246ec7cb704c6f96123556db1a083301634/cheroot/makefile.py#L5
msg308116 - (view) Author: Matúš Valo (Matúš Valo) * Date: 2017-12-12 11:18
Previous import is working in python 2.7:
$ python
Python 2.7.14 (default, Oct 31 2017, 21:12:13)
[GCC 6.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import _pyio
>>>
msg308117 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2017-12-12 11:28
The msvcrt module is part of the standard library on Windows. Your cygwin installation may be incomplete.

By the way, why are you importing a private module? _pyio isn't a public API and shouldn't be used.
msg308135 - (view) Author: Zachary Ware (zach.ware) * (Python committer) Date: 2017-12-12 15:10
Presumably this issue does prevent us from testing _pyio on Cygwin, which is not ideal.  The outside usage of _pyio is definitely not supported, as Christian said, but this may be worth fixing anyway.
msg308136 - (view) Author: Matúš Valo (Matúš Valo) * Date: 2017-12-12 15:20
I am using not using _pyio module directly but I am using cherrypy server which is using this module (more precisely its component cheroot):
https://github.com/cherrypy/cheroot/blob/86c6b246ec7cb704c6f96123556db1a083301634/cheroot/makefile.py#L5

Regarding installation of cygwin environment, I can check it in other machine.
msg308138 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2017-12-12 15:24
Could you please file a bug with cherrypy and get it fixed?

Cygwin not yet officially supported and stable. Erik is working hard on stable support for 3.7.
msg308139 - (view) Author: Zachary Ware (zach.ware) * (Python committer) Date: 2017-12-12 15:28
Right, so you should raise an issue with cherrypy :).  You're more likely to get a fix from them quickly, and their usage of _pyio is not correct anyway.

Also, note that Cygwin is not (anymore/yet) a fully-supported platform.  We're working towards that status, but aren't there yet.
msg308172 - (view) Author: Masayuki Yamamoto (masamoto) * Date: 2017-12-12 23:37
This issue seems to duplicate #28459.

#28459 has a patch (implement _setmode() by ctypes on _pyio).  I'm not sure _setmode() will be used in other places in the future, but the patch just works at the moment.
In addition, I have an idea which implements C extension (imitation msvcrt or just cygwin).
msg308629 - (view) Author: Erik Bray (erik.bray) * (Python triager) Date: 2017-12-19 11:54
Indeed, this is a duplicate of #28459.  I'll also update the existing patch to a pull request.
History
Date User Action Args
2018-03-23 20:05:53berker.peksagsetsuperseder: _pyio module broken on Cygwin / setmode not usable
2017-12-19 11:54:40erik.braysetstatus: open -> closed
resolution: duplicate
messages: + msg308629

stage: needs patch -> resolved
2017-12-12 23:37:41masamotosetmessages: + msg308172
2017-12-12 15:28:39zach.waresetmessages: + msg308139
2017-12-12 15:24:50christian.heimessetmessages: + msg308138
2017-12-12 15:20:06Matúš Valosetmessages: + msg308136
2017-12-12 15:10:04zach.waresetpriority: normal -> low

type: crash -> behavior
versions: + Python 3.7, - Python 3.6
nosy: + zach.ware, masamoto

messages: + msg308135
stage: needs patch
2017-12-12 13:52:35r.david.murraysetnosy: + erik.bray
2017-12-12 11:28:43christian.heimessetnosy: + christian.heimes
messages: + msg308117
2017-12-12 11:18:11Matúš Valosetmessages: + msg308116
2017-12-12 11:14:02Matúš Valocreate