This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年08月18日 13:01 by khinsen, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| FindPythonLibs.cmake | rsanchezsaez, 2009年12月15日 17:35 | |||
| Messages (13) | |||
|---|---|---|---|
| msg71324 - (view) | Author: Konrad Hinsen (khinsen) | Date: 2008年08月18日 13:01 | |
On a MacOS X framework build, the LINKFORSHARED variable obtained from distutils.sysconfig.get_config_vars() has the value -u _PyMac_Error Python.framework/Versions/2.5/Python The last item is incomplete, it needs to be prefixed with the path in which the Python framework is installed. Looking at config/Makefile (from which Distutils takes the variables), I find LINKFORSHARED= -u _PyMac_Error $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) and PYTHONFRAMEWORKDIR= Python.framework One fix would be to use PYTHONFRAMEWORKINSTALLDIR instead of PYTHONFRAMEWORKDIR in the definition of LINKFORSHARED, but I don't know if this could have undesirable effects on the build process. |
|||
| msg75493 - (view) | Author: Matteo Bertini (naufraghi) * | Date: 2008年11月04日 14:26 | |
I confirm this issue, some handy workaround available? |
|||
| msg75511 - (view) | Author: Matteo Bertini (naufraghi) * | Date: 2008年11月05日 00:06 | |
The solution I found is: LINKFORSHARED = -u _PyMac_Error -framework Python as in the Apple included Python Makefile and LDFLAGS += -F$(PYTHONFRAMEWORKPREFIX) that makes linker use the right framework (not sure, but works with MacPython installed) |
|||
| msg75517 - (view) | Author: Matteo Bertini (naufraghi) * | Date: 2008年11月05日 08:36 | |
I can add that providing the option: -mmacosx-version-min=10.4 or setting the anv var MACOSX_DEPLOYMENT_TARGET=10.4 is it possible to build an extension in MacPython.org too (without that option there was a problem with some 10.5 libs) |
|||
| msg96440 - (view) | Author: Ricardo Sánchez-Sáez (rsanchezsaez) | Date: 2009年12月15日 15:16 | |
This bug is still present in Python 2.6 and Python 3.0 included with
Snow Leopard.
Code:
/Library/Frameworks/Python.framework/Versions/3.0/bin/python
Python 3.0.1 (r301:69597, Feb 14 2009, 19:03:52)
[GCC 4.0.1 (Apple Inc. build 5490)] on darwin
>> import distutils.sysconfig
>> print(distutils.sysconfig.get_config_var('LINKFORSHARED'))
returns:
Python.framework/Versions/3.0/Python
and
/Library/Frameworks/Python.framework/Versions/2.6/bin/python
Python 2.6.2 (r262:71600, Apr 16 2009, 09:17:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
>> import distutils.sysconfig
>> print(distutils.sysconfig.get_config_var('LINKFORSHARED'))
Returns:
-u _PyMac_Error Python.framework/Versions/2.6/Python
However,
/usr/bin/python
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
>> import distutils.sysconfig
>> print(distutils.sysconfig.get_config_var('LINKFORSHARED'))
returns the correct path:
-u _PyMac_Error
/System/Library/Frameworks/Python.framework/Versions/2.6/Python
|
|||
| msg96442 - (view) | Author: Ricardo Sánchez-Sáez (rsanchezsaez) | Date: 2009年12月15日 16:08 | |
Correction to my last message: the first two Python installations,
located at /Library/Frameworks/Python.framework/Versions/ did not come
with Snow Leopard, I installed them from MacPython packages. The Snow
Leopard version (/usr/bin/python) does not seem affected by the bug.
I just installed the latest MacPython stable packages (2.6.4 and 3.1.1),
and the relative path bug is still present. Here's the result for 3.1.1:
--$ /Library/Frameworks/Python.framework/Versions/3.1/bin/python3
Python 3.1.1 (r311:74543, Aug 24 2009, 18:44:04)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import distutils.sysconfig
>>> print(distutils.sysconfig.get_config_var('LINKFORSHARED'))
-framework CoreFoundation Python.framework/Versions/3.1/Python
|
|||
| msg96449 - (view) | Author: Ronald Oussoren (ronaldoussoren) * (Python committer) | Date: 2009年12月15日 17:05 | |
What do you use LINKFORSHARED for? As a minor rant: the wholesale export of all settings in the main Makefile through distutils sucks big time. I have no idea whether or not LINKFORSHARED is meant to be a public API, and if it is what it should be used for. The value of LINKFORSHARED is correct for building the framework, making sure that the value is useful outside of the build of Python itself would almost certainly require hacks, either in the makefile or by patching the Makefile during installation. BTW. I have no idea what's the point of msg75511, it doesn't seem to be related to the original report. |
|||
| msg96451 - (view) | Author: Ricardo Sánchez-Sáez (rsanchezsaez) | Date: 2009年12月15日 17:35 | |
I am using it to tell CMake where are the Python Libraries for linking.
Here's a snippet from my FindPythonLibs.cmake (I am attaching the whole
file as well):
...
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import
distutils.sysconfig\nprint
distutils.sysconfig.get_config_var('LINKFORSHARED')"
OUTPUT_VARIABLE PYTHON_LDFLAGS_OUTPUT_VARIABLE
ERROR_VARIABLE PYTHON_LDFLAGS_ERROR_VARIABLE
RESULT_VARIABLE PYTHON_LDFLAGS_RETURN_VALUE
)
...
Does anybody happen to know a better/more correct way for linking the
python libs?
|
|||
| msg96458 - (view) | Author: Ronald Oussoren (ronaldoussoren) * (Python committer) | Date: 2009年12月15日 19:38 | |
python-config (or python3-config for python 3.x) is the best way to get this information in recent versions of python (IIRC 2.6 or newer) |
|||
| msg96469 - (view) | Author: Ricardo Sánchez-Sáez (rsanchezsaez) | Date: 2009年12月15日 22:13 | |
Thank you! That's much more convenient. So maybe then this bug report should be closed without a fix, right? |
|||
| msg96496 - (view) | Author: Ronald Oussoren (ronaldoussoren) * (Python committer) | Date: 2009年12月16日 20:21 | |
To be honest: I don't know. Tarek: do you think LINKFORSHARED should contain a value that works outside of Python's build environment? |
|||
| msg96510 - (view) | Author: Tarek Ziadé (tarek) * (Python committer) | Date: 2009年12月17日 10:11 | |
I agree with Ronald: making sure all variables in Makefile provide values that can work in any environment just because distutils offers an API to read them would be a major pain. What is planned is to remove sysconfig from distutils, and have it in the stdlib, with a private module built when ./configure is called, that would contain these variables. And maybe we could filter out some variables in this process to keep only the ones that can be used by code in all environments. IOW, if python-config provides what you need, LINKFORSHARED could be filtered out so the API cannot return it. |
|||
| msg183145 - (view) | Author: Andrew Jaffe (Andrew.Jaffe) | Date: 2013年02月27日 12:27 | |
Was this actually fixed? As per <http://bugs.python.org/issue16848> it affects "python-config --ldflags" which is used by various build systems. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:37 | admin | set | github: 47838 |
| 2013年02月27日 12:27:33 | Andrew.Jaffe | set | nosy:
+ Andrew.Jaffe messages: + msg183145 |
| 2009年12月18日 19:03:41 | tarek | set | status: open -> closed |
| 2009年12月17日 10:11:07 | tarek | set | assignee: tarek messages: + msg96510 |
| 2009年12月16日 20:21:20 | ronaldoussoren | set | messages: + msg96496 |
| 2009年12月15日 22:13:35 | rsanchezsaez | set | messages: + msg96469 |
| 2009年12月15日 19:38:24 | ronaldoussoren | set | messages: + msg96458 |
| 2009年12月15日 17:35:12 | rsanchezsaez | set | files:
+ FindPythonLibs.cmake messages: + msg96451 |
| 2009年12月15日 17:05:05 | ronaldoussoren | set | messages: + msg96449 |
| 2009年12月15日 16:08:53 | rsanchezsaez | set | messages:
+ msg96442 versions: + Python 3.1 |
| 2009年12月15日 16:01:21 | r.david.murray | set | priority: normal nosy: + ronaldoussoren, tarek keywords: + easy versions: - Python 2.5, Python 3.0 |
| 2009年12月15日 15:16:39 | rsanchezsaez | set | nosy:
+ rsanchezsaez messages: + msg96440 versions: + Python 2.6, Python 3.0 |
| 2008年11月05日 08:36:39 | naufraghi | set | messages: + msg75517 |
| 2008年11月05日 00:06:37 | naufraghi | set | messages: + msg75511 |
| 2008年11月04日 14:26:35 | naufraghi | set | nosy:
+ naufraghi messages: + msg75493 |
| 2008年08月18日 13:01:35 | khinsen | create | |