Thanks for the quick reply. My mailer lost it (rather remembered it originiated as a reply to something else, and stored it there) - :)

I would reply between the text below - but, mainly thanks for showing the use of 'inspect' - will be extremely handy as I learn enough to make a (local) patch.

Michael

p.s. the >>> prompts make it look very colorful in my mail program!

On 2016-03-04 11:22, Peter Otten wrote:
Michael Felt wrote:

First, a simple one:

sysconfig.is_python_build()

      Return True if the current Python installation was built from source.

  sysconfig.is_python_build()
False

Now, not earth shattering, but I did build this from source - so can
someone help me with understanding why Python says no?
Looking into the source of a self-compilee Python version:

$ python3.6
Python 3.6.0a0 (default:c092148a1b55+, Mar  1 2016, 15:26:05)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
import sysconfig, inspect
print(inspect.getsource(sysconfig.is_python_build))
def is_python_build(check_home=False):
     if check_home and _sys_home:
         return _is_python_source_dir(_sys_home)
     return _is_python_source_dir(_PROJECT_BASE)

print(inspect.getsource(sysconfig._is_python_source_dir))
def _is_python_source_dir(d):
     for fn in ("Setup.dist", "Setup.local"):
         if os.path.isfile(os.path.join(d, "Modules", fn)):
             return True
     return False

sysconfig._PROJECT_BASE
'/usr/local/bin'

So this effectively looks for the file /usr/local/bin/Modules/Setup.dist
or /usr/local/bin/Modules/Setup.local which of course fails. You have to
invoke the interpreter in the directory where it was built:

$ /wherever/you/unpacked/and/compiled/python
Python 3.6.0a0 (default:c092148a1b55+, Mar  1 2016, 15:26:05)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
import sysconfig
sysconfig.is_python_build()
True

And a last question (more about the configure phase I expect)

...() returns, among other things:

'LIBRARY_OBJS': '\\',
'MODULE_OBJS': '\\',
'PARSER_HEADERS': '\\',
'PGENSRCS': '\\ \\',
'PYTHON_OBJS': '\\',
'QUICKTESTOPTS': '-l -x test_subprocess test_io test_lib2to3 \\',

'SHLIB_EXT': '".so"',

Why are any of these using '\\' for anything on 'posix'?
Is that data actually used anywhere? I suspect this is a parsing mishap and
these are actually line continuation indicators. In the Makefile I find (e.
g.)

PYTHON_OBJS=    \
                Python/_warnings.o \
                Python/Python-ast.o \
                Python/asdl.o \
[snip]



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to