[issue33011] Embedded 3.6.4 distribution does not add script parent as sys.path[0]

2018-03-06 Thread Cong Monkey

Change by Cong Monkey <congzhan...@gmail.com>:


--
components: +Windows
nosy: +paul.moore, steve.dower, tim.golden, zach.ware
type:  -> behavior

___
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33011>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue33011] Embedded 3.6.4 distribution does not add script parent as sys.path[0]

2018-03-06 Thread Cong Monkey

New submission from Cong Monkey <congzhan...@gmail.com>:

Embedded 3.6.0 distribution does not insert script parent in sys.path[0], but 
the normal python do it.

this make some failed, like when I try to do pip install future, it will failed 
as import src.future failed, which works for normal python.

The root source maybe when python36._pth exist, python rewrite the flag and 
mark as isolate mode automate, which will not update sys.path when 
pymain_init_sys_path.

I use a trick which is really bad as a work around(and even when site .main the 
sys.argv is not ready!), and hope upstream will fix the root source.

===begin in my usercustomize.py:
import sys

import pathlib



class DummyImportHook(object):

def __init__(self, *args):

self.is_script_path_to_sys_path_be_done = False

pass


def find_module(self, fullname, path=None):

# print(f'{DummyImportHook.__name__} trigger {sys.argv if hasattr(sys, 
"argv") else ""} ')

if not self.is_script_path_to_sys_path_be_done and hasattr(sys, 'argv'):

if sys.argv[0] is not None:

# print(f'{DummyImportHook.__name__}:argv is {sys.argv}')

path_obj = pathlib.Path(sys.argv[0])

# #if path_obj.exists():

# print(f'{DummyImportHook.__name__}:I am try to add 
{str(path_obj.parent)} to sys.path')

sys.path.insert(0, str(path_obj.parent))

print(f'{DummyImportHook.__name__}:current sys.path is 
{sys.path}')

pass

self.is_script_path_to_sys_path_be_done = True

pass

return None

pass



print(f'{DummyImportHook.__name__}:auto script path to sys.path hook load!')



#sys.meta_path = [DummyImportHook()]

sys.meta_path.insert(0,DummyImportHook())


===end in my usercustomize.py:
===begin in my python36._pth
python36
.
# Uncomment to run site.main() automatically
import site
===end in my python36._pth

BTW, where is Embedded distribution package script in python git repo?

--
messages: 313316
nosy: Cong Monkey
priority: normal
severity: normal
status: open
title: Embedded 3.6.4 distribution does not add script parent as sys.path[0]
versions: Python 3.6

___
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue33011>
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com