Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows qtconsole without cmd window #3

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 30 additions & 9 deletions start_jupyter_cm/windows.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,16 @@
import _winreg as winreg
from win32com.shell import shell

PYTHON_PATH = os.environ[
"WINPYDIR"] if "WINPYDIR" in os.environ else sys.prefix
WPSCRIPTS_FOLDER = "Scripts"
QTCONSOLE_SCRIPT = """from qtconsole.qtconsoleapp import main


if __name__ == '__main__':
main()
"""


def remove_jupyter_here():
for env in ('qtconsole', 'notebook'):
Expand All @@ -47,6 +56,9 @@ def remove_jupyter_here():
winreg.HKEY_CLASSES_ROOT,
r'Directory\Background\shell\jupyter_%s_here' %
env)
# remove sjc-jupyter-qtconsole-script.py when un-installing
os.remove(os.path.join(PYTHON_PATH, 'Scripts',
'sjc-jupyter-qtconsole-script.py'))
print("Jupyter %s here context menu entry removed." % env)
except:
# If this fails it is because it was not installed, so nothing to
Expand All @@ -60,17 +72,26 @@ def add_jupyter_here():
os.path.dirname(__file__), 'icons'))
logos = {'qtconsole': os.path.join(logo_path, 'jupyter-qtconsole.ico'),
'notebook': os.path.join(logo_path, 'jupyter.ico')}

# Here I need to create a script for pythonw
scr_fw = open(os.path.join(PYTHON_PATH, 'Scripts',
Copy link
Member

@francisco-dlp francisco-dlp Jul 9, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do you create the sjc-jupyter-qtconsole-script.py to start the qtconsole instead of using the identical one that ships with qtconsole?

'sjc-jupyter-qtconsole-script.py'), 'w')
scr_fw.write(QTCONSOLE_SCRIPT)
scr_fw.close()

for env in ('qtconsole', 'notebook'):
if "WINPYDIR" in os.environ:
# Calling from WinPython
# Paths are relative, so we have to set the env first
script = os.path.join(os.environ["WINPYDIR"], "..",
WPSCRIPTS_FOLDER,
"env.bat")
script += " & jupyter-%s" % env
if env == 'notebook':
if "WINPYDIR" in os.environ:
# Calling from WinPython
# Paths are relative, so we have to set the env first
script = os.path.join(
PYTHON_PATH, "..", WPSCRIPTS_FOLDER, "env.bat") + " & jupyter-notebook"
else:
script = os.path.join(
PYTHON_PATH, 'Scripts', 'jupyter-notebook.exe')
else:
script = os.path.join(
sys.prefix, 'Scripts', "jupyter-%s.exe" % env)
script = os.path.join(PYTHON_PATH, 'pythonw.exe') + ' ' + os.path.join(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When working from WinPython we should first call the env.bat script in order to set the environment variables correctly. Currently you code doesn't call env.bat.

PYTHON_PATH, 'Scripts', 'sjc-jupyter-qtconsole-script.py')

shell_script = script + ' --notebook-dir "%1"' if env == "notebook"\
else script
Expand Down