Issue 928297: platform.libc_ver() fails on Cygwin (original) (raw)
Created on 2004-04-02 14:55 by quiver, last changed 2022-04-11 14:56 by admin. This issue is now closed.
Messages (6)
Author: George Yoshida (quiver)
Date: 2004-04-02 14:55
import platform platform.libc_ver() Traceback (most recent call last): File "", line 1, in ? File "/usr/lib/python2.3/platform.py", line 134, in libc_ver f = open(executable,'rb') IOError: [Errno 2] No such file or directory: '/usr/bin/python'
The problem is that on Cygwin sys.executable returns /path/to/python, but since Cygwin is running on Windows, sys.executable is a symbolic link to /path/to/python.exe.
import os, sys os.path.exists(sys.executable) True os.path.isfile(sys.executable) True file(sys.executable) Traceback (most recent call last): File "", line 1, in ? IOError: [Errno 2] No such file or directory: '/usr/bin/python' os.path.islink(sys.executable) True os.path.realpath(sys.executable) '/usr/bin/python2.3.exe' file(sys.executable + '.exe') <open file '/usr/bin/python.exe', mode 'r' at 0xa100ca0>
Following is the info about the machine I tested:
from platform import * platform() 'CYGWIN_NT-5.0-1.5.7-0.109-3-2-i686-32bit' python_compiler() 'GCC 3.3.1 (cygming special)' python_build() (1, 'Dec 30 2003 08:29:25') python_version() '2.3.3' uname() ('CYGWIN_NT-5.0', 'my_user_name', '1.5.7 (0.109/3/2)', '2004-01-30 19:32', 'i686', '')
Author: Marc-Andre Lemburg (lemburg) *
Date: 2004-04-02 15:59
Logged In: YES user_id=38388
Patches are welcome :-)
I don't have cygwin installed, so there's nothing much I can do about this.
Author: George Yoshida (quiver)
Date: 2004-04-03 04:20
Logged In: YES user_id=671362
First, I need to correct my previous post. 'symbolic' was unrelated. Python on Cygwin does't like exe files that doesn't end with '.exe'. I think changing fileobject.c to support I/O exe files on Cygwin whether it ends with '.exe' or not is the way to go.
Is there anyone who can do that? It's beyoond my skill level.
$ ls -l /usr/bin/python* lrwxrwxrwx 1 abel Users 24 Jan 1 01:34 /usr/bin/python -
python2.3.exe lrwxrwxrwx 1 abel Users 24 Jan 1 01:34 /usr/bin/python.exe -> python2.3.exe -rwxrwxrwx 1 abel Users 4608 Dec 30 22:32 /usr/bin/python2.3.exe
file('/usr/bin/python') Traceback (most recent call last): File "", line 1, in ? IOError: [Errno 2] No such file or directory: '/usr/bin/python' file('/usr/bin/python.exe') <open file '/usr/bin/python.exe', mode 'r' at 0xa069320> file('/usr/bin/python2.3') Traceback (most recent call last): File "", line 1, in ? IOError: [Errno 2] No such file or directory: '/usr/bin/python2.3' file('/usr/bin/python2.3.exe') <open file '/usr/bin/python2.3.exe', mode 'r' at 0xa0c8de0>
Author: Marc-Andre Lemburg (lemburg) *
Date: 2004-07-23 10:34
Logged In: YES user_id=38388
Would applying os.path.realpath() to sys.executable before trying to open that file fix the problem on Cygwin ?
Another question: does using libc_ver() even make sense on cygwin ?
libc_ver() was never intended to be used on non-*nix platforms. I don't even know whether it works on other platforms than Linux.
Author: George Yoshida (quiver)
Date: 2004-07-29 23:29
Logged In: YES user_id=671362
Sorry for my late response, Marc.
Would applying os.path.realpath() to sys.executable before trying to open that file fix the problem on Cygwin ?
That change fixes the IO problem. After this, it doesn't raise IOError. The result of platform.libc_ver() is as follows:
import platform platform.libc_ver() ('', '')
Another question: does using libc_ver() even make sense on cygwin ?
As far as I have checked, it doesn't look like so. According to the Cygwin FAQ[*], Cygwin doesn't use glibc, although it says that there's a counterpart(called ``newlib'') in Cygwin. C runtime embedded into cygwin1.dll uses newlib.
Experienced C & Cygwin programmers might anser this question more precisely.
[*] Where is glibc? :
http://rustam.uwp.edu/support/faq.html#SEC88
Author: Marc-Andre Lemburg (lemburg) *
Date: 2007-01-13 19:29
Since Cygwin doesn't appear to use the GLibC, there's no surprise in libc_ver() not returning any useful information.