Open WilianZilv opened 2 years ago
thanks for filing the issue. I haven't been able to repro this, it always just opens with the workspace folder as the cwd. I do see something in your logs specifying that folder though, so I'm trying to find out where that would come from.
Although, are you saying that you expect the cwd to be c:\Projetos\project-2
? If your setting is ${workspaceFolder}
then it should be the workspace folder, c:\Projetos\
. Still unclear why it's going to project-1, but are you somehow getting the working directory to be the current selected file's directory?
I think this is by design. ${workspaceFolder}
is actually dependent upon what file you're in.
The Create Interactive Window
command doesn't look at the active file. It's neutral, so it just ends up using the first workspace folder. We could probably change it to use the current active editor.
We pass undefined here: https://github.com/microsoft/vscode-jupyter/blob/261afd99b9880e31de1fc1e27aa49c836253fcb0/src/interactive-window/interactiveWindowCommandListener.node.ts#L351
That's why it would always use the first workspace folder.
change it to use the current active editor
when dealing with muti-root workspace, i think we should ask the user. vscode already has an api for this, else where just making guess again and that could again cause other issues.
eg if you create a terminal vacode will ask the user to pick a workspace folder from the list, python extension has the same functionality for some features.
ah, I was just trying a workspace with two folders, not a multi-root workspace. Following the terminal's example seems reasonable to me
Maybe the behaviour i was getting before the clean uninstall/install was acctually a bug. That's kinda funny. I have now tested in more 3 different machines and they all behave as i described in the issue.
In my case, "Jupyter: Create Interactive Window" creates a jupyter session in the first folder of my workspace (the one on top). Execute "pwd" in the IPython console to verify. This is very annoying because I work different environment files within the folders.
Yeah, it'd be nice if the user was prompted which workspace folder (in a multi-root one) to used when creating a new Interactive Window, similar to what already happens with terminals.
Environment data
Expected behaviour
When run the command "Jupyter: Create Interactive Window" (jupyter.createnewinteractive) The python interactive window should open on the current project's folder as working directory, which can be seen with line command pwd
Actual behaviour
The python interactive window opens in the first folder of the workspace.
Steps to reproduce:
Logs
Output for
Jupyter
in theOutput
panel (View
→Output
, change the drop-down the upper-right of theOutput
panel toJupyter
)``` info 17:11:25.936: Starting interactive window for resoruce info 17:11:25.992: TargetController found ID: .jvsc74a57bd008bb98ca2d6689b39b6f979a5f9bf126935b1dd434099537d44d1a8671c31e85.c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe.c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe.-m#ipykernel_launcher (Interactive) for document Interactive-1.interactive info 17:11:26.14: Process Execution: > ~\AppData\Local\Programs\Python\Python37\python.exe -m pip list > ~\AppData\Local\Programs\Python\Python37\python.exe -m pip list info 17:11:26.111: Starting Notebook id = .jvsc74a57bd008bb98ca2d6689b39b6f979a5f9bf126935b1dd434099537d44d1a8671c31e85.c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe.c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe.-m#ipykernel_launcher for Interactive-1.interactive (disableUI=false) info 17:11:26.112: Creating raw notebook for info 17:11:26.112: Computing working directory info 17:11:26.112: Starting raw kernel Python 3.7.3 64-bit for interpreter c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe info 17:11:26.127: Process Execution: > ~\AppData\Local\Programs\Python\Python37\python.exe -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)" > ~\AppData\Local\Programs\Python\Python37\python.exe -c "import ipykernel; print(ipykernel.__version__); print("5dc3a68c-e34e-4080-9c3e-2a532b2ccb4d"); print(ipykernel.__file__)" info 17:11:26.177: Kernel launching with ports 9000,9001,9002,9003,9004. Start port is 9000 info 17:11:26.218: Creating daemon process for c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe with env variables count 70 info 17:11:26.222: Process Execution: > ~\AppData\Local\Programs\Python\Python37\python.exe -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.kernel_interrupt_daemon -v --ppid 23792 > ~\AppData\Local\Programs\Python\Python37\python.exe -m vscode_datascience_helpers.daemon --daemon-module=vscode_datascience_helpers.kernel_interrupt_daemon -v --ppid 23792 info 17:11:26.313: get interrupthandle daemon info 17:11:26.316: Process Execution: > ~\AppData\Local\Programs\Python\Python37\python.exe -m ipykernel_launcher --ip=127.0.0.1 --stdin=9003 --control=9001 --hb=9000 --Session.signature_scheme="hmac-sha256" --Session.key=b"ddcbf33d-ccd9-4358-919e-a7e3cafa85eb" --shell=9002 --transport="tcp" --iopub=9004 --f=c:\Users\Wilian\AppData\Roaming\jupyter\runtime\kernel-23792zWQ0Q8r1Myn5.json > ~\AppData\Local\Programs\Python\Python37\python.exe -m ipykernel_launcher --ip=127.0.0.1 --stdin=9003 --control=9001 --hb=9000 --Session.signature_scheme="hmac-sha256" --Session.key=b"ddcbf33d-ccd9-4358-919e-a7e3cafa85eb" --shell=9002 --transport="tcp" --iopub=9004 --f=c:\Users\Wilian\AppData\Roaming\jupyter\runtime\kernel-23792zWQ0Q8r1Myn5.json info 17:11:26.316: Process Execution: cwd: c:\Projetos\project-1 cwd: c:\Projetos\project-1 info 17:11:26.371: ipykernel version 6.13.0 for c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe info 17:11:26.371: ipykernel location ~\AppData\Local\Programs\Python\Python37\lib\site-packages\ipykernel\__init__.py for c:\Users\Wilian\AppData\Local\Programs\Python\Python37\python.exe warn 17:11:27.29: StdErr from Kernel Process c:\Users\Wilian\AppData\Local\Programs\Python\Python37\lib\site-packages\traitlets\traitlets.py:2205: FutureWarning: Supporting extra quotes around strings is deprecated in traitlets 5.0. You can use 'hmac-sha256' instead of '"hmac-sha256"' if you require traitlets >=5. FutureWarning) c:\Users\Wilian\AppData\Local\Programs\Python\Python37\lib\site-packages\traitlets\traitlets.py:2160: FutureWarning: Supporting extra quotes around Bytes is deprecated in traitlets 5.0. Use 'ddcbf33d-ccd9-4358-919e-a7e3cafa85eb' instead of 'b"ddcbf33d-ccd9-4358-919e-a7e3cafa85eb"'. FutureWarning) info 17:11:27.75: Kernel Output: NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work. To exit, you will have to explicitly quit this process, by either sending "quit" from a client, or using Ctrl-\ in UNIX-like environments. To read more about this, see https://github.com/ipython/ipython/issues/2049 To connect another client to this kernel, use: --existing c:\Users\Wilian\AppData\Roaming\jupyter\runtime\kernel-23792zWQ0Q8r1Myn5.json info 17:11:27.166: Started kernel Python 3.7.3 64-bit, (Raw session started and connected) info 17:11:27.167: Finished connecting 8e6fbbd7-c72a-4f63-92b1-8990dfbbae25 info 17:11:27.187: UpdateWorkingDirectoryAndPath in Kernel info 17:11:27.189: Executing silently Code (idle) = import types as _VSCODE_types\nimport os\nimport hashlib as _VSCODE_hashlib\nfrom IPython import get_ip info 17:11:27.216: Executing silently Code (completed) = import types as _VSCODE_types\nimport os\nimport hashlib as _VSCODE_hashlib\nfrom IPython import get_ip info 17:11:27.216: Executing silently Code (idle) = %load_ext autoreload\n%autoreload 2 info 17:11:27.246: Executing silently Code (completed) = %load_ext autoreload\n%autoreload 2 info 17:11:27.246: Waiting for idle on (kernel): ed968a9d-860d-4eac-b030-79a1ded15251 -> idle info 17:11:27.246: Finished waiting for idle on (kernel): ed968a9d-860d-4eac-b030-79a1ded15251 -> idle info 17:11:48.520: Execute Cell 1 Interactive-1.interactive info 17:11:48.595: Cell 1 executed with state Success ```
Considerations
It always worked until i did a clean uninstall and install today. Also, i have "jupyter.notebookFileRoot": "${workspaceFolder}" in my settings.json