Eryk Sun <eryk...@gmail.com> added the comment:

This is still a problem with WinAPI CreateSymbolicLinkW. It fails to replace 
slashes with backslashes in the substitute path if it's a relative path, which 
creates a broken link. As a workaround, os.symlink should replace slashes with 
backslashes in relative target paths. Except drive-relative targets such as 
"C:spam" can be ignored, since CreateSymbolicLinkW is forced to normalize them 
as fully-qualified paths.

Non-UNC rooted paths such as "/Program Files/Python38" are also relative paths. 
(ntpath.isabs incorrectly classifies them as absolute.) A relative target path 
gets resolved against the parsed, opened path of the symlink. For example, 
consider a symlink on a volume at r"Eggs\spam.txt" that targets r"\spam.txt". 
If the volume is mounted at "W:\\", then accessing r"W:\Eggs\spam.txt" resolves 
to r"W:\spam.txt". But if the volume is mounted at r"C:\Mount\Work", then 
accessing r"C:\Mount\Work\Eggs\spam.txt" resolves to r"C:\spam.txt".

----------
components: +Library (Lib)
nosy: +paul.moore, steve.dower, zach.ware
stage: test needed -> needs patch
versions: +Python 3.10, Python 3.8, Python 3.9 -Python 3.2, Python 3.3

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

Reply via email to