From 0f849f22ef972de631dde103fc2e1a2a65eff1b8 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 22 Aug 2024 09:45:49 +0200 Subject: [PATCH 1/3] Python: added a script to run Python itself. This is not strictly needed on Windows and macOS, but it is on Linux since we need to set `LD_LIBRARY_PATH`. --- CMakeLists.txt | 7 +++++++ distrib/linux/python | 7 +++++++ distrib/macos/python.in | 3 +++ distrib/windows/python.bat | 5 +++++ 4 files changed, 22 insertions(+) create mode 100755 distrib/linux/python create mode 100755 distrib/macos/python.in create mode 100644 distrib/windows/python.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index 5fbe3081a3..53e8dd532d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1444,6 +1444,7 @@ if(WIN32) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab.vbs) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.bat) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.vbs) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . python.bat) install(FILES ${PLATFORM_DISTRIB_DIR}/ipython.bat ${PLATFORM_DISTRIB_DIR}/jupyter.bat @@ -1452,6 +1453,7 @@ if(WIN32) ${PLATFORM_DISTRIB_DIR}/jupyterlab.vbs ${PLATFORM_DISTRIB_DIR}/jupyternotebook.bat ${PLATFORM_DISTRIB_DIR}/jupyternotebook.vbs + ${PLATFORM_DISTRIB_DIR}/python.bat DESTINATION .) endif() @@ -1530,6 +1532,7 @@ elseif(APPLE) set(JUPYTER_CONSOLE_FILENAME ${PROJECT_BUILD_DIR}/jupyterconsole) set(JUPYTER_LAB_FILENAME ${PROJECT_BUILD_DIR}/jupyterlab) set(JUPYTER_NOTEBOOK_FILENAME ${PROJECT_BUILD_DIR}/jupyternotebook) + set(PYTHON_FILENAME ${PROJECT_BUILD_DIR}/python) set(PYTHON_SHELL_FILENAME ${PROJECT_BUILD_DIR}/pythonshell) configure_file(${PLATFORM_DISTRIB_DIR}/ipython.in ${IPYTHON_FILENAME} @ONLY) @@ -1537,6 +1540,7 @@ elseif(APPLE) configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/jupyterlab.in ${JUPYTER_LAB_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/jupyternotebook.in ${JUPYTER_NOTEBOOK_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/python.in ${PYTHON_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) install(FILES ${IPYTHON_FILENAME} @@ -1544,6 +1548,7 @@ elseif(APPLE) ${JUPYTER_CONSOLE_FILENAME} ${JUPYTER_LAB_FILENAME} ${JUPYTER_NOTEBOOK_FILENAME} + ${PYTHON_FILENAME} ${PYTHON_SHELL_FILENAME} DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) @@ -1637,6 +1642,7 @@ else() configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . python) configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) install(FILES ${PLATFORM_DISTRIB_DIR}/ipython @@ -1644,6 +1650,7 @@ else() ${JUPYTER_CONSOLE_FILENAME} ${PLATFORM_DISTRIB_DIR}/jupyterlab ${PLATFORM_DISTRIB_DIR}/jupyternotebook + ${PLATFORM_DISTRIB_DIR}/python ${PYTHON_SHELL_FILENAME} DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) diff --git a/distrib/linux/python b/distrib/linux/python new file mode 100755 index 0000000000..4c5d50b60e --- /dev/null +++ b/distrib/linux/python @@ -0,0 +1,7 @@ +#!/bin/sh + +appDir="$(cd "$(dirname "$0")"; pwd)" + +export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH + +"${appDir}/python/bin/python" "$@" diff --git a/distrib/macos/python.in b/distrib/macos/python.in new file mode 100755 index 0000000000..c8b52ea68b --- /dev/null +++ b/distrib/macos/python.in @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(cd "$(dirname "$0")"; pwd)/@CMAKE_PROJECT_NAME@.app/Contents/Frameworks/Python/bin/python" "$@" diff --git a/distrib/windows/python.bat b/distrib/windows/python.bat new file mode 100644 index 0000000000..ec3e148f15 --- /dev/null +++ b/distrib/windows/python.bat @@ -0,0 +1,5 @@ +@ECHO OFF + +TITLE Running Python... + +CALL "%~dp0Python\bin\python.exe" %* From 908d66c6a533124a78315dc880b09d85473a5c6c Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 22 Aug 2024 10:12:03 +0200 Subject: [PATCH 2/3] Python: renamed the Python folder from `python` to `Python` under Linux. This is so that we can have a `python` script to run Python itself without a name clash. --- distrib/linux/ipython | 2 +- distrib/linux/jupyter | 2 +- distrib/linux/jupyterconsole.in | 2 +- distrib/linux/jupyterlab | 2 +- distrib/linux/jupyternotebook | 2 +- distrib/linux/python | 2 +- distrib/linux/runipython | 2 +- distrib/linux/runjupyter | 2 +- .../PythonSupport/src/pythonsupportplugin.cpp | 12 ++---------- src/plugins/thirdParty/Python/CMakeLists.txt | 2 +- 10 files changed, 11 insertions(+), 19 deletions(-) diff --git a/distrib/linux/ipython b/distrib/linux/ipython index 2665d76369..5d5c2c17b2 100755 --- a/distrib/linux/ipython +++ b/distrib/linux/ipython @@ -4,4 +4,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)" export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH -"${appDir}/python/bin/runipython" "$@" +"${appDir}/Python/bin/runipython" "$@" diff --git a/distrib/linux/jupyter b/distrib/linux/jupyter index 212a7e3f7c..7b6e84204e 100755 --- a/distrib/linux/jupyter +++ b/distrib/linux/jupyter @@ -4,4 +4,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)" export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH -"${appDir}/python/bin/runjupyter" "$@" +"${appDir}/Python/bin/runjupyter" "$@" diff --git a/distrib/linux/jupyterconsole.in b/distrib/linux/jupyterconsole.in index 4acced4b4d..7812de5392 100755 --- a/distrib/linux/jupyterconsole.in +++ b/distrib/linux/jupyterconsole.in @@ -4,4 +4,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)" export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH -"${appDir}/python/bin/runjupyter" console --kernel @CMAKE_PROJECT_NAME@ "$@" +"${appDir}/Python/bin/runjupyter" console --kernel @CMAKE_PROJECT_NAME@ "$@" diff --git a/distrib/linux/jupyterlab b/distrib/linux/jupyterlab index b7004057c4..ee5d63033f 100755 --- a/distrib/linux/jupyterlab +++ b/distrib/linux/jupyterlab @@ -4,4 +4,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)" export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH -"${appDir}/python/bin/runjupyter" lab --ip 127.0.0.1 "$@" +"${appDir}/Python/bin/runjupyter" lab --ip 127.0.0.1 "$@" diff --git a/distrib/linux/jupyternotebook b/distrib/linux/jupyternotebook index 69e90aa80f..f6a9a87386 100755 --- a/distrib/linux/jupyternotebook +++ b/distrib/linux/jupyternotebook @@ -4,4 +4,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)" export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH -"${appDir}/python/bin/runjupyter" notebook --ip 127.0.0.1 "$@" +"${appDir}/Python/bin/runjupyter" notebook --ip 127.0.0.1 "$@" diff --git a/distrib/linux/python b/distrib/linux/python index 4c5d50b60e..630499a990 100755 --- a/distrib/linux/python +++ b/distrib/linux/python @@ -4,4 +4,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)" export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH -"${appDir}/python/bin/python" "$@" +"${appDir}/Python/bin/python" "$@" diff --git a/distrib/linux/runipython b/distrib/linux/runipython index bb9ed2a233..330f121463 100755 --- a/distrib/linux/runipython +++ b/distrib/linux/runipython @@ -5,4 +5,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)/../.." export PATH="${appDir}/bin":$PATH export PYDEVD_DISABLE_FILE_VALIDATION=1 -"${appDir}/python/bin/ipython" "$@" +"${appDir}/Python/bin/ipython" "$@" diff --git a/distrib/linux/runjupyter b/distrib/linux/runjupyter index 81e3c12555..2ae45f2f2c 100755 --- a/distrib/linux/runjupyter +++ b/distrib/linux/runjupyter @@ -5,4 +5,4 @@ appDir="$(cd "$(dirname "$0")"; pwd)/../.." export PATH="${appDir}/bin":$PATH export PYDEVD_DISABLE_FILE_VALIDATION=1 -"${appDir}/python/bin/jupyter" "$@" +"${appDir}/Python/bin/jupyter" "$@" diff --git a/src/plugins/support/PythonSupport/src/pythonsupportplugin.cpp b/src/plugins/support/PythonSupport/src/pythonsupportplugin.cpp index a590ea7a06..a7169499eb 100644 --- a/src/plugins/support/PythonSupport/src/pythonsupportplugin.cpp +++ b/src/plugins/support/PythonSupport/src/pythonsupportplugin.cpp @@ -97,23 +97,15 @@ void PythonSupportPlugin::initializePlugin() QString pythonHome = QCoreApplication::applicationDirPath()+"/../"; -#if defined(Q_OS_WIN) +#if defined(Q_OS_WIN) || defined(Q_OS_LINUX) pythonHome += "Python"; -#elif defined(Q_OS_LINUX) - pythonHome += "python"; #else pythonHome = pythonHome+"Frameworks/Python"; #endif #if defined(Q_OS_WIN) || defined(Q_OS_LINUX) if (!QDir(pythonHome).exists()) { - pythonHome = QCoreApplication::applicationDirPath()+"/"; - -#ifdef Q_OS_WIN - pythonHome += "Python"; -#else - pythonHome += "python"; -#endif + pythonHome = QCoreApplication::applicationDirPath()+"/Python"; } #endif diff --git a/src/plugins/thirdParty/Python/CMakeLists.txt b/src/plugins/thirdParty/Python/CMakeLists.txt index 24c01350d5..c49f08120a 100644 --- a/src/plugins/thirdParty/Python/CMakeLists.txt +++ b/src/plugins/thirdParty/Python/CMakeLists.txt @@ -58,7 +58,7 @@ else() if (APPLE) set(ROOT_DIR ${FULL_DEST_EXTERNAL_LIBRARIES_DIR}/Python) else() - set(ROOT_DIR ${FULL_DEST_EXTERNAL_LIBRARIES_DIR}/../python) + set(ROOT_DIR ${FULL_DEST_EXTERNAL_LIBRARIES_DIR}/../Python) endif() set(BINARY_DIR bin) From 067fe4ad7d4ccef84e3bb9a79d83275ca7722587 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 22 Aug 2024 11:16:39 +0200 Subject: [PATCH 3/3] Python: added a convenience script to run pip. --- CMakeLists.txt | 5 +++++ distrib/linux/pip | 7 +++++++ distrib/macos/pip.in | 3 +++ distrib/windows/pip.bat | 5 +++++ 4 files changed, 20 insertions(+) create mode 100755 distrib/linux/pip create mode 100755 distrib/macos/pip.in create mode 100644 distrib/windows/pip.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index 53e8dd532d..833d370adf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1444,6 +1444,7 @@ if(WIN32) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab.vbs) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.bat) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook.vbs) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . pip.bat) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . python.bat) install(FILES ${PLATFORM_DISTRIB_DIR}/ipython.bat @@ -1453,6 +1454,7 @@ if(WIN32) ${PLATFORM_DISTRIB_DIR}/jupyterlab.vbs ${PLATFORM_DISTRIB_DIR}/jupyternotebook.bat ${PLATFORM_DISTRIB_DIR}/jupyternotebook.vbs + ${PLATFORM_DISTRIB_DIR}/pip.bat ${PLATFORM_DISTRIB_DIR}/python.bat DESTINATION .) endif() @@ -1532,6 +1534,7 @@ elseif(APPLE) set(JUPYTER_CONSOLE_FILENAME ${PROJECT_BUILD_DIR}/jupyterconsole) set(JUPYTER_LAB_FILENAME ${PROJECT_BUILD_DIR}/jupyterlab) set(JUPYTER_NOTEBOOK_FILENAME ${PROJECT_BUILD_DIR}/jupyternotebook) + set(PIP_FILENAME ${PROJECT_BUILD_DIR}/pip) set(PYTHON_FILENAME ${PROJECT_BUILD_DIR}/python) set(PYTHON_SHELL_FILENAME ${PROJECT_BUILD_DIR}/pythonshell) @@ -1540,6 +1543,7 @@ elseif(APPLE) configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/jupyterlab.in ${JUPYTER_LAB_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/jupyternotebook.in ${JUPYTER_NOTEBOOK_FILENAME} @ONLY) + configure_file(${PLATFORM_DISTRIB_DIR}/pip.in ${PIP_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/python.in ${PYTHON_FILENAME} @ONLY) configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) @@ -1642,6 +1646,7 @@ else() configure_file(${PLATFORM_DISTRIB_DIR}/jupyterconsole.in ${JUPYTER_CONSOLE_FILENAME} @ONLY) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyterlab) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . jupyternotebook) + copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . pip) copy_file_to_build_dir(DIRECT ${PLATFORM_DISTRIB_DIR} . python) configure_file(${PLATFORM_DISTRIB_DIR}/pythonshell.in ${PYTHON_SHELL_FILENAME} @ONLY) diff --git a/distrib/linux/pip b/distrib/linux/pip new file mode 100755 index 0000000000..a3129fdd84 --- /dev/null +++ b/distrib/linux/pip @@ -0,0 +1,7 @@ +#!/bin/sh + +appDir="$(cd "$(dirname "$0")"; pwd)" + +export LD_LIBRARY_PATH="${appDir}/lib":$LD_LIBRARY_PATH + +"${appDir}/Python/bin/python" -m pip "$@" diff --git a/distrib/macos/pip.in b/distrib/macos/pip.in new file mode 100755 index 0000000000..e7adea5d70 --- /dev/null +++ b/distrib/macos/pip.in @@ -0,0 +1,3 @@ +#!/bin/sh + +"$(cd "$(dirname "$0")"; pwd)/@CMAKE_PROJECT_NAME@.app/Contents/Frameworks/Python/bin/python" -m pip "$@" diff --git a/distrib/windows/pip.bat b/distrib/windows/pip.bat new file mode 100644 index 0000000000..de0d006905 --- /dev/null +++ b/distrib/windows/pip.bat @@ -0,0 +1,5 @@ +@ECHO OFF + +TITLE Running Python... + +CALL "%~dp0Python\bin\python.exe" -m pip %*