msg202634 - (view) |
Author: Marc Abramowitz (Marc.Abramowitz) * |
Date: 2013-11-11 17:29 |
I just installed Python 3.0a4 from source on an Ubuntu system and noticed that it doesn't seem to set the distutils.sysconfig config var: "SO": ``` vagrant@ubuntu:~/src/Python-3.4.0a4$ python3.4 Python 3.4.0a4 (default, Nov 11 2013, 17:11:59) [GCC 4.6.3] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from distutils import sysconfig >>> sysconfig.get_config_var("SO") >>> sysconfig.get_config_var("SO") is None True ``` This worked fine for me in Python 3.3: ``` vagrant@ubuntu:~/src/Python-3.4.0a4$ python3.3 Python 3.3.2 (default, May 16 2013, 18:32:41) [GCC 4.6.3] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from distutils import sysconfig >>> sysconfig.get_config_var("SO") '.so' ``` |
|
|
msg202637 - (view) |
Author: Barry A. Warsaw (barry) *  |
Date: 2013-11-11 18:19 |
Indeed, this happens for me too in default head. |
|
|
msg202638 - (view) |
Author: Barry A. Warsaw (barry) *  |
Date: 2013-11-11 18:21 |
Never mind, this is an intentional change: - Issue #16754: Fix the incorrect shared library extension on linux. Introduce two makefile macros SHLIB_SUFFIX and EXT_SUFFIX. SO now has the value of SHLIB_SUFFIX again (as in 2.x and 3.1). The SO macro is removed in 3.4. Although this does introduce some backward compatibility issues. Perhaps sysconfig.get_config_var('SO') should be deprecated in 3.4 and removed in 3.5. |
|
|
msg202639 - (view) |
Author: Marc Abramowitz (Marc.Abramowitz) * |
Date: 2013-11-11 18:27 |
Thanks Barry, for tracking down that this is intentional. I wonder how one gets this value in Python code now? For example, the reason I stumbled upon this in the first place is that there is some code in PyCrypto (https://github.com/dlitz/pycrypto/blob/master/lib/Crypto/SelfTest/PublicKey/test_RSA.py#L464) that uses `get_config_var("SO")` thusly: ``` except ImportError: from distutils.sysconfig import get_config_var import inspect _fm_path = os.path.normpath(os.path.dirname(os.path.abspath( inspect.getfile(inspect.currentframe()))) +"/../../PublicKey/_fastmath"+get_config_var("SO")) if os.path.exists(_fm_path): raise ImportError("While the _fastmath module exists, importing "+ "it failed. This may point to the gmp or mpir shared library "+ "not being in the path. _fastmath was found at "+_fm_path) ``` What would be the way to express this now in Python >= 3.4? |
|
|
msg202648 - (view) |
Author: Barry A. Warsaw (barry) *  |
Date: 2013-11-11 19:56 |
Here's a patch, sans NEWS and any docs. |
|
|
msg202649 - (view) |
Author: Barry A. Warsaw (barry) *  |
Date: 2013-11-11 19:57 |
Note that obviously the DeprecationWarning is not raised if you do sysconfig.get_config_vars()['SO'] but it still gets mapped to EXT_SUFFIX in that case. |
|
|
msg202650 - (view) |
Author: Barry A. Warsaw (barry) *  |
Date: 2013-11-11 20:01 |
On Nov 11, 2013, at 06:27 PM, Marc Abramowitz wrote: >What would be the way to express this now in Python >= 3.4? For now, use sysconfig.get_config_var('EXT_SUFFIX') though if no one objects to my patch, I'll restore 'SO' for 3.4. We'll add a DeprecationWarning and get rid of it in 3.5. |
|
|
msg203701 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2013-11-21 23:57 |
New changeset fedc2b8fbb6e by Barry Warsaw in branch 'default': - Issue #19555: Restore sysconfig.get_config_var('SO'), with a http://hg.python.org/cpython/rev/fedc2b8fbb6e |
|
|
msg203735 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2013-11-22 10:58 |
Test is failing on Windows: http://buildbot.python.org/all/builders/x86%20Windows%20Server%202003%20%5BSB%5D%203.x/builds/1758/steps/test/logs/stdio ====================================================================== ERROR: test_SO_in_vars (test.test_sysconfig.TestSysConfig) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\Data\buildslave\cpython\3.x.snakebite-win2k3r2sp2-x86\build\lib\test\test_sysconfig.py", line 388, in test_SO_in_vars self.assertIsNotNone(vars['SO']) KeyError: 'SO' ====================================================================== FAIL: test_SO_value (test.test_sysconfig.TestSysConfig) ---------------------------------------------------------------------- Traceback (most recent call last): File "E:\Data\buildslave\cpython\3.x.snakebite-win2k3r2sp2-x86\build\lib\test\test_sysconfig.py", line 382, in test_SO_value sysconfig.get_config_var('EXT_SUFFIX')) AssertionError: None != '.pyd' |
|
|
msg203793 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2013-11-22 16:08 |
New changeset 331b7a8bb830 by Barry Warsaw in branch 'default': A fix for issue 19555 on Windows. http://hg.python.org/cpython/rev/331b7a8bb830 |
|
|
msg203865 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2013-11-22 20:31 |
New changeset 8a130fd92255 by Barry Warsaw in branch 'default': Issue 19555 for distutils, plus a little clean up (pyflakes, line lengths). http://hg.python.org/cpython/rev/8a130fd92255 |
|
|
msg212996 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2014-03-09 22:50 |
New changeset ac2ee9fc353a by R David Murray in branch 'default': whatsnew: deprecation of sysconfig SO key (#19555). http://hg.python.org/cpython/rev/ac2ee9fc353a |
|
|