Opened 4 years ago
Last modified 3 years ago
#4567 assigned defect
Microsoft OneDrive changes Desktop location so ~/Desktop does not exist or is not writable
Reported by: | Tristan Croll | Owned by: | Tom Goddard |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | Input/Output | Version: | |
Keywords: | Cc: | pett | |
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The following bug report has been submitted: Platform: Windows-10-10.0.19041 ChimeraX Version: 1.1 (2020-09-09 22:22:27 UTC) Description (More of an FYI/Windows annoyance than a ChimeraX bug per se): I just attached my machine to my University's OneDrive account, and it seems it quietly switched my desktop to C:\Users\tic20\OneDrive - University of Cambridge\Desktop (and similar for my Pictures directory). Now "save ~/Desktop/..." no longer works... is there some way to point directly to the designated Desktop folder without spelling it out explicitly? OpenGL version: 3.3.0 NVIDIA 426.00 OpenGL renderer: GeForce GTX 1070/PCIe/SSE2 OpenGL vendor: NVIDIA Corporation Manufacturer: ASUSTeK COMPUTER INC. Model: GL502VS OS: Microsoft Windows 10 Home (Build 19041) Memory: 34,292,408,320 MaxProcessMemory: 137,438,953,344 CPU: 8 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz" PyQt version: 5.12.3 Compiled Qt version: 5.12.4 Runtime Qt version: 5.12.9 Installed Packages: alabaster: 0.7.12 appdirs: 1.4.4 Babel: 2.8.0 backcall: 0.2.0 blockdiag: 2.0.1 certifi: 2020.6.20 chardet: 3.0.4 ChimeraX-AddH: 2.1.3 ChimeraX-AlignmentAlgorithms: 2.0 ChimeraX-AlignmentHdrs: 3.2 ChimeraX-AlignmentMatrices: 2.0 ChimeraX-Alignments: 2.1 ChimeraX-Arrays: 1.0 ChimeraX-Atomic: 1.6.1 ChimeraX-AtomSearch: 2.0 ChimeraX-AxesPlanes: 2.0 ChimeraX-BasicActions: 1.1 ChimeraX-BILD: 1.0 ChimeraX-BlastProtein: 1.0.1 ChimeraX-BondRot: 2.0 ChimeraX-BugReporter: 1.0 ChimeraX-BuildStructure: 2.0 ChimeraX-Bumps: 1.0 ChimeraX-BundleBuilder: 1.0 ChimeraX-ButtonPanel: 1.0 ChimeraX-CageBuilder: 1.0 ChimeraX-CellPack: 1.0 ChimeraX-Centroids: 1.1 ChimeraX-ChemGroup: 2.0 ChimeraX-Clashes: 2.0 ChimeraX-Clipper: 0.15.0 ChimeraX-ColorActions: 1.0 ChimeraX-ColorGlobe: 1.0 ChimeraX-CommandLine: 1.1.3 ChimeraX-ConnectStructure: 2.0 ChimeraX-Contacts: 1.0 ChimeraX-Core: 1.1 ChimeraX-CoreFormats: 1.0 ChimeraX-coulombic: 1.0.1 ChimeraX-Crosslinks: 1.0 ChimeraX-Crystal: 1.0 ChimeraX-DataFormats: 1.0 ChimeraX-Dicom: 1.0 ChimeraX-DistMonitor: 1.1 ChimeraX-DistUI: 1.0 ChimeraX-Dssp: 2.0 ChimeraX-EMDB-SFF: 1.0 ChimeraX-ExperimentalCommands: 1.0 ChimeraX-FileHistory: 1.0 ChimeraX-FunctionKey: 1.0 ChimeraX-Geometry: 1.1 ChimeraX-gltf: 1.0 ChimeraX-Graphics: 1.0 ChimeraX-Hbonds: 2.0 ChimeraX-Help: 1.0 ChimeraX-HKCage: 1.3 ChimeraX-IHM: 1.0 ChimeraX-ImageFormats: 1.0 ChimeraX-IMOD: 1.0 ChimeraX-IO: 1.0 ChimeraX-ISOLDE: 1.1.0 ChimeraX-Label: 1.0 ChimeraX-ListInfo: 1.0 ChimeraX-Log: 1.1.1 ChimeraX-LookingGlass: 1.1 ChimeraX-Map: 1.0.1 ChimeraX-MapData: 2.0 ChimeraX-MapEraser: 1.0 ChimeraX-MapFilter: 2.0 ChimeraX-MapFit: 2.0 ChimeraX-MapSeries: 2.0 ChimeraX-Markers: 1.0 ChimeraX-Mask: 1.0 ChimeraX-MatchMaker: 1.1 ChimeraX-MDcrds: 2.0 ChimeraX-MedicalToolbar: 1.0.1 ChimeraX-Meeting: 1.0 ChimeraX-MLP: 1.0 ChimeraX-mmCIF: 2.2 ChimeraX-MMTF: 2.0 ChimeraX-Modeller: 1.0 ChimeraX-ModelPanel: 1.0 ChimeraX-ModelSeries: 1.0 ChimeraX-Mol2: 2.0 ChimeraX-Morph: 1.0 ChimeraX-MouseModes: 1.0 ChimeraX-Movie: 1.0 ChimeraX-Neuron: 1.0 ChimeraX-Nucleotides: 2.0 ChimeraX-OpenCommand: 1.2.1 ChimeraX-PDB: 2.1 ChimeraX-PDBBio: 1.0 ChimeraX-PickBlobs: 1.0 ChimeraX-Positions: 1.0 ChimeraX-PresetMgr: 1.0 ChimeraX-PubChem: 2.0 ChimeraX-Read-Pbonds: 1.0 ChimeraX-Registration: 1.1 ChimeraX-RemoteControl: 1.0 ChimeraX-ResidueFit: 1.0 ChimeraX-RestServer: 1.0 ChimeraX-RNALayout: 1.0 ChimeraX-RotamerLibMgr: 2.0 ChimeraX-RotamerLibsDunbrack: 2.0 ChimeraX-RotamerLibsDynameomics: 2.0 ChimeraX-RotamerLibsRichardson: 2.0 ChimeraX-SaveCommand: 1.2 ChimeraX-SchemeMgr: 1.0 ChimeraX-SDF: 2.0 ChimeraX-Segger: 1.0 ChimeraX-Segment: 1.0 ChimeraX-SeqView: 2.2 ChimeraX-Shape: 1.0.1 ChimeraX-Shell: 1.0 ChimeraX-Shortcuts: 1.0 ChimeraX-ShowAttr: 1.0 ChimeraX-ShowSequences: 1.0 ChimeraX-SideView: 1.0 ChimeraX-Smiles: 2.0 ChimeraX-SmoothLines: 1.0 ChimeraX-SpaceNavigator: 1.0 ChimeraX-StdCommands: 1.0.4 ChimeraX-STL: 1.0 ChimeraX-Storm: 1.0 ChimeraX-Struts: 1.0 ChimeraX-Surface: 1.0 ChimeraX-SwapAA: 2.0 ChimeraX-SwapRes: 2.0 ChimeraX-TapeMeasure: 1.0 ChimeraX-Test: 1.0 ChimeraX-Toolbar: 1.0 ChimeraX-ToolshedUtils: 1.0 ChimeraX-Tug: 1.0 ChimeraX-UI: 1.2.3 ChimeraX-uniprot: 2.0 ChimeraX-ViewDockX: 1.0 ChimeraX-Vive: 1.1 ChimeraX-VolumeMenu: 1.0 ChimeraX-VTK: 1.0 ChimeraX-WavefrontOBJ: 1.0 ChimeraX-WebCam: 1.0 ChimeraX-WebServices: 1.0 ChimeraX-Zone: 1.0 colorama: 0.4.3 comtypes: 1.1.7 cxservices: 1.0 cycler: 0.10.0 Cython: 0.29.20 decorator: 4.4.2 distlib: 0.3.1 docutils: 0.16 filelock: 3.0.12 funcparserlib: 0.3.6 gdcm: 2.8.8 grako: 3.16.5 h5py: 2.10.0 html2text: 2020.1.16 idna: 2.10 ihm: 0.16 imagecodecs: 2020.5.30 imagecodecs-lite: 2020.1.31 imagesize: 1.2.0 ipykernel: 5.3.0 ipython: 7.15.0 ipython-genutils: 0.2.0 jedi: 0.17.2 Jinja2: 2.11.2 jupyter-client: 6.1.3 jupyter-core: 4.6.3 kiwisolver: 1.2.0 line-profiler: 2.1.2 lxml: 4.5.1 MarkupSafe: 1.1.1 matplotlib: 3.2.1 msgpack: 1.0.0 netifaces: 0.10.9 networkx: 2.4 numexpr: 2.7.1 numpy: 1.18.5+mkl numpydoc: 1.0.0 openvr: 1.12.501 packaging: 20.4 parso: 0.7.1 pickleshare: 0.7.5 Pillow: 7.1.2 pip: 20.2.2 pkginfo: 1.5.0.1 prompt-toolkit: 3.0.7 psutil: 5.7.0 pycollada: 0.7.1 pydicom: 2.0.0 Pygments: 2.6.1 PyOpenGL: 3.1.5 PyOpenGL-accelerate: 3.1.5 pyparsing: 2.4.7 PyQt5-commercial: 5.12.3 PyQt5-sip: 4.19.19 PyQtWebEngine-commercial: 5.12.1 python-dateutil: 2.8.1 pytz: 2020.1 pywin32: 228 pyzmq: 19.0.2 qtconsole: 4.7.4 QtPy: 1.9.0 RandomWords: 0.3.0 requests: 2.24.0 scipy: 1.4.1 setuptools: 49.4.0 sfftk-rw: 0.6.6.dev0 six: 1.15.0 snowballstemmer: 2.0.0 sortedcontainers: 2.2.2 Sphinx: 3.1.1 sphinxcontrib-applehelp: 1.0.2 sphinxcontrib-blockdiag: 2.0.0 sphinxcontrib-devhelp: 1.0.2 sphinxcontrib-htmlhelp: 1.0.3 sphinxcontrib-jsmath: 1.0.1 sphinxcontrib-qthelp: 1.0.3 sphinxcontrib-serializinghtml: 1.1.4 suds-jurko: 0.6 tables: 3.6.1 tifffile: 2020.6.3 tinyarray: 1.2.2 tornado: 6.0.4 traitlets: 5.0.4 urllib3: 1.25.10 wcwidth: 0.2.5 webcolors: 1.11.1 wheel: 0.34.2 WMI: 1.5.1
Change History (16)
comment:1 by , 4 years ago
Cc: | added |
---|---|
Component: | Unassigned → Input/Output |
Owner: | set to |
Platform: | → all |
Project: | → ChimeraX |
Status: | new → assigned |
Summary: | ChimeraX bug report submission → Unwanted Desktop |
comment:2 by , 4 years ago
follow-up: 3 comment:3 by , 4 years ago
From a little bit of reading, apparently things can get a bit funky with respect to the "magic" that OneDrive does behind the scenes. Came across this little snippet at https://stackoverflow.com/questions/53491811/how-to-find-path-to-desktop-in-python, which successfully finds the correct path: from win32com.shell import shell, shellcon desktop = shell.SHGetFolderPath (0, shellcon.CSIDL_DESKTOP, 0, 0) ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 26 April 2021 19:24 Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #4567: Unwanted Desktop #4567: Unwanted Desktop ------------------------------------+------------------------- Reporter: Tristan Croll | Owner: Tom Goddard Type: defect | Status: assigned Priority: normal | Milestone: Component: Input/Output | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+------------------------- Comment (by Eric Pettersen): Hi Tristan, In most cases ChimeraX is using os.path.expanduser("~/Desktop") to find the Desktop. You may be able to affect this with environment variables (by setting os.environ) as per the expanduser documentation for Windows: On Windows, USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by stripping the last directory component from the created user path derived above. Changed in version 3.8: No longer uses HOME on Windows. --Eric -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4567#comment:2> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:4 by , 4 years ago
Summary: | Unwanted Desktop → OneDrive changes Windows ~/Desktop expansion |
---|
This seems like either a OneDrive or a Python bug, or maybe no bug at all and is the expected behavior. Before hacking ChimeraX to use something other than os.path.expanduser("~/Desktop") I'd like to know who's bug this is. It is unlikely I will find time to research this.
Also what does "save ~/Desktop/... no longer works" mean? Doesn't it save to OneDrive/Desktop? Or does it give some error because OneDrive/Desktop is not writable?
comment:5 by , 4 years ago
God forbid I'm not suggesting we use something other than expanduser(). I was just suggesting some possible personal workarounds.
However, if saving to ~/Desktop actually fails, maybe we want to do something error-handling-wise, if we don't already.
follow-up: 6 comment:6 by , 4 years ago
It fails because "~/Desktop" still tries to expand to C:\Users\tic20\Desktop, which no longer exists. ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 26 April 2021 22:24 Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion (was: Unwanted Desktop) #4567: OneDrive changes Windows ~/Desktop expansion ------------------------------------+------------------------- Reporter: Tristan Croll | Owner: Tom Goddard Type: defect | Status: assigned Priority: normal | Milestone: Component: Input/Output | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+------------------------- Comment (by Tom Goddard): This seems like either a OneDrive or a Python bug, or maybe no bug at all and is the expected behavior. Before hacking ChimeraX to use something other than os.path.expanduser("~/Desktop") I'd like to know who's bug this is. It is unlikely I will find time to research this. Also what does "save ~/Desktop/... no longer works" mean? Doesn't it save to OneDrive/Desktop? Or does it give some error because OneDrive/Desktop is not writable? -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4567#comment:4> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
follow-up: 7 comment:7 by , 4 years ago
That is horrifying, Microsoft OneDrive makes your Desktop folder at the standard location no longer exists. Almost hard to believe. Isn't the Desktop directory a normal directory on your disk -- how is it made to disappear? It sounds like Python doesn't handle the insanity of Microsoft nicely.
follow-up: 8 comment:8 by , 4 years ago
Agreed - there was clearly some quite "interesting" decision-making that went into this. If I check the properties of my Desktop folder, its location is now: "C:\Users\tic20\OneDrive - University of Cambridge\Desktop". ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 26 April 2021 23:31 To: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu> Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion #4567: OneDrive changes Windows ~/Desktop expansion ------------------------------------+------------------------- Reporter: Tristan Croll | Owner: Tom Goddard Type: defect | Status: assigned Priority: normal | Milestone: Component: Input/Output | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+------------------------- Comment (by goddard@…): {{{ That is horrifying, Microsoft OneDrive makes your Desktop folder at the standard location no longer exists. Almost hard to believe. Isn't the Desktop directory a normal directory on your disk -- how is it made to disappear? It sounds like Python doesn't handle the insanity of Microsoft nicely. }}} -- Ticket URL: <https://plato.cgl.ucsf.edu/trac/ChimeraX/ticket/4567#comment:7> ChimeraX <http://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:9 by , 4 years ago
This post discusses the same issue with no proposed solution
https://stackoverflow.com/questions/60742419/python-os-cannot-get-path-to-desktop-on-one-drive
comment:10 by , 4 years ago
There is a One Drive Python SDK that seems totally unsuitable for our use due to authentication issues: https://github.com/OneDrive/onedrive-sdk-python
follow-up: 11 comment:11 by , 4 years ago
With a little updating to Python 3, the solution at https://stackoverflow.com/questions/626796/how-do-i-find-the-windows-common-application-data-folder-using-python/626927#626927 works: import ctypes from ctypes import wintypes, windll CSIDL_DESKTOPDIRECTORY=0x10 _SHGetFolderPath = windll.shell32.SHGetFolderPathW _SHGetFolderPath.argtypes = [wintypes.HWND, ctypes.c_int, wintypes.HANDLE, wintypes.DWORD, wintypes.LPCWSTR] path_buf=wintypes.ctypes.create_unicode_buffer(wintypes.MAX_PATH) result = _SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, path_buf) print(path_buf.value) C:\Users\tristan\OneDrive - University of Cambridge\Desktop Full list of available queries is at https://www.nirsoft.net/articles/find_special_folder_location.html. ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 04 February 2022 19:53 Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion #4567: OneDrive changes Windows ~/Desktop expansion ------------------------------------+------------------------- Reporter: Tristan Croll | Owner: Tom Goddard Type: defect | Status: assigned Priority: normal | Milestone: Component: Input/Output | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+------------------------- Comment (by pett): There is a One Drive Python SDK that seems totally unsuitable for our use due to authentication issues: https://github.com/OneDrive/onedrive-sdk- python -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4567#comment:10> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
follow-up: 12 comment:12 by , 4 years ago
... although looks like that's using an older, deprecated Windows API. The new approach is documented at https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid, and there's a Python wrapper at https://gist.github.com/mkropat/7550097. ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 04 February 2022 20:17 To: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Cc: pett@cgl.ucsf.edu <pett@cgl.ucsf.edu> Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion #4567: OneDrive changes Windows ~/Desktop expansion ------------------------------------+------------------------- Reporter: Tristan Croll | Owner: Tom Goddard Type: defect | Status: assigned Priority: normal | Milestone: Component: Input/Output | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+------------------------- Comment (by Tristan Croll): {{{ With a little updating to Python 3, the solution at https://stackoverflow.com/questions/626796/how-do-i-find-the-windows- common-application-data-folder-using-python/626927#626927 works: import ctypes from ctypes import wintypes, windll CSIDL_DESKTOPDIRECTORY=0x10 _SHGetFolderPath = windll.shell32.SHGetFolderPathW _SHGetFolderPath.argtypes = [wintypes.HWND, ctypes.c_int, wintypes.HANDLE, wintypes.DWORD, wintypes.LPCWSTR] path_buf=wintypes.ctypes.create_unicode_buffer(wintypes.MAX_PATH) result = _SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, path_buf) print(path_buf.value) C:\Users\tristan\OneDrive - University of Cambridge\Desktop Full list of available queries is at https://www.nirsoft.net/articles/find_special_folder_location.html. ________________________________ From: ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> Sent: 04 February 2022 19:53 Cc: goddard@cgl.ucsf.edu <goddard@cgl.ucsf.edu>; pett@cgl.ucsf.edu <pett@cgl.ucsf.edu>; Tristan Croll <tic20@cam.ac.uk> Subject: Re: [ChimeraX] #4567: OneDrive changes Windows ~/Desktop expansion #4567: OneDrive changes Windows ~/Desktop expansion ------------------------------------+------------------------- Reporter: Tristan Croll | Owner: Tom Goddard Type: defect | Status: assigned Priority: normal | Milestone: Component: Input/Output | Version: Resolution: | Keywords: Blocked By: | Blocking: Notify when closed: | Platform: all Project: ChimeraX | ------------------------------------+------------------------- Comment (by pett): There is a One Drive Python SDK that seems totally unsuitable for our use due to authentication issues: https://github.com/OneDrive/onedrive-sdk- python -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4567#comment:10> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker }}} -- Ticket URL: <https://www.rbvi.ucsf.edu/trac/ChimeraX/ticket/4567#comment:11> ChimeraX <https://www.rbvi.ucsf.edu/chimerax/> ChimeraX Issue Tracker
comment:13 by , 4 years ago
Another idea is there is supposed to be a OneDrive environment variable that gives the OneDrive folder.
https://stackoverflow.com/questions/26771265/get-onedrive-path-in-windows
That may not account for whether OneDrive is enabled.
Although this ticket is assigned to me I don't plan to work on it since the solutions look so fragile and I don't use OneDrive or Windows. It will take a lot of bug reports before I could justify working on this time sink, and likely future maintenance burden.
comment:14 by , 3 years ago
Summary: | OneDrive changes Windows ~/Desktop expansion → Microsoft OneDrive changes Desktop location so ~/Desktop does not exist or is not writable |
---|
Another case of this problem #8020.
ChimeraX also tries to change the current directory to ~/Desktop at startup and if that directory does not exist then the current directory is going to be some system location that is not writable. If we ever found a way to reliably detect OneDrive and know which desktop directory to use than the startup code should also chdir to that directory.
follow-up: 15 comment:15 by , 3 years ago
One simple workaround would be to catch when the standard Desktop directory isn't found, and bring up a file browser asking the user to point to it? On Mon, Nov 14, 2022 at 7:35 PM ChimeraX <ChimeraX-bugs-admin@cgl.ucsf.edu> wrote:
follow-up: 16 comment:16 by , 3 years ago
That is possible, could ask, and then save the answer as a preference so it doesn't ask every time you start ChimeraX. But some heuristic code could simply search and find the OneDrive desktop folder (it often has an account name in the folder name). I think it is simpler to find the desktop, but haven't done it because only a few people have reported it and I am hoping that Microsoft makes it a bit easier to find if I give them time.
Hi Tristan,
On Windows, USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by stripping the last directory component from the created user path derived above.
Changed in version 3.8: No longer uses HOME on Windows.
--Eric