You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Python scripts are executed with the wrong path separator in integrated Powershell on Windows #13811
Extension version (available under the Extensions sidebar): 2020.08.106424
OS and version: Windows 10 , 1909, build 18363.1016
Python version (& distribution if applicable, e.g. Anaconda): Anaconda, 3.7.7
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): conda
Relevant/affected Python packages and their versions: N/A
Relevant/affected Python-related VS Code extensions and their versions: N/A
Value of the python.languageServer setting: Jedi
Expected behaviour
On Windows, with Powershell as the embedded terminal, the path to the python executable and to the current script being executed should use backslashes.
Which was very confusing at first--when I debugged the script, paths which were constructed using os.path.join with os.path.basename(__file__) had homogeneous, all-backslash paths, but when I ran it with python.execInTerminal, the paths were mixed!
Steps to reproduce:
Use "Python: Select Interpreter" to launch a file dialog and locate python.exe in C:\Users\USERNAME\Anaconda3\envs\ENVNAME.
Use python.execInTerminal (the little play button) to launch a script, with terminal.integrated.shell.windows unset (that is, left to its default of C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe).
Witness the forward-slash generated command in the integrated terminal.
Details
I'm currently working on a script that uses os.path.join, os.path.basename, etc., and in particular uses basename(__file__) to get the path of the current script in a cross-platform way. This does intelligently interprets the forward slashes as path separators, and trims off the SCRIPT.py part, leaving a C:/Users... path. But then, subsequent joins with this path have mixed slashes, since join correctly uses backslash as a path separator on windows.
This isn't a problem for my script at the moment, since all file-access code (for instance, these mixed-slash paths are being passed to glob.glob) seems to be intelligently homogenizing the slashes. But it could become a problem in the future.
Yes, I'm usually running on Ubuntu these days (or, if on Windows, using the remote feature over SSH), so I don't bump up against this. However, I uninstalled and reinstalled the Python, Jupyter, and Pylance extensions just now (Python extension is now at v2021.3.680753044). I still see all-backslashes when running a script in debug mode, but, in run mode, backslashes in the prompt and forward slashes in the python.exe and BLAH.py path to the right of the prompt.
I'm converting this to a feature request under Github discussions to see how many users face this issue. My initial gut says that you seem to have a very special case where the way script is launched is important to you, but for most users it isn't so unfortunately I don't see us prioritizing to fix it ourselves.
Activity
ericsnowcurrently commentedon Sep 8, 2020
Tom Bertalan (@tsbertalan), thanks for letting us know about this. We'll take a look and get back to you as soon as possible.
karrtikr commentedon Apr 6, 2021
Is this issue still happening with the latest version of the extension?
tsbertalan commentedon Apr 6, 2021
Yes, I'm usually running on Ubuntu these days (or, if on Windows, using the remote feature over SSH), so I don't bump up against this. However, I uninstalled and reinstalled the Python, Jupyter, and Pylance extensions just now (Python extension is now at v2021.3.680753044). I still see all-backslashes when running a script in debug mode, but, in run mode, backslashes in the prompt and forward slashes in the python.exe and BLAH.py path to the right of the prompt.
karrtikr commentedon Apr 6, 2021
Tom Bertalan (@tsbertalan) Thanks for the prompt response. We think the general solution on how to launch scripts should come from VSCode, microsoft/vscode#108550.
I'm converting this to a feature request under Github discussions to see how many users face this issue. My initial gut says that you seem to have a very special case where the way script is launched is important to you, but for most users it isn't so unfortunately I don't see us prioritizing to fix it ourselves.