Friday, December 13, 2024

Create virtual environments the easy way

A powerful and possibly underused feature or PyScripter is the Externa Tools.  A collection of such tools is included with the installation, but you can create your own.

Virtual python environments are isolated workspaces, that allow you to install packages and test code, without messing up the main python installation.  After using them for a specific purpose you can just delete them.  Python ships with a module called venv, that allows you to easily create such virtual environments.

Instead of creating such environments from the command prompt you can create an external tool to do that.  You can can create new external tools using Tools, Configure Tools, Add.  You can then fill the information as in the image below.


You can run the created tool by selecting it from the Tools, Tools menu.  It will prompt you for a folder in which the virtual environment will be created and then will create the environment.  To use the created environment, you then go to Run, Python Versions, Setup Python Versions..., add a new unregistered python version at the new virtual environment folder and activate it.

If you are using Conda python distributions you can create an external tool to create conda virtual environments instead.  Note though, that conda virtual environments are much more heavyweight than the venv ones.

The next release of PyScripter will add such an external tool to new installations and you can easily add it to existing installations.

Thursday, December 12, 2024

Free-threaded python support is coming to PyScripter

One of the main limitations of Python has been its inability to make use of the multiple cores of modern CPUs, at least not easily. This is due to the infamous Global Interpreter Lock.  In essence, due to the presence of the GIL, only one python thread can execute at a time,

Python 3.13 has changed this and provides an experimental free-threaded (or No-GIL) version.  It is included in the standard installer, but you need to select the relevant option (see below) to install it.

Python 3.13 Windows Installer

What you get is a another python executable called python3.13t.exe alongside python.exe.   This executable runs the free-threaded version of python.

This RealPython article provides an in-depth coverage of free-threaded python and is recommended reading. .

The next version of PyScripter will include support for free-treaded Python. The Run, Python Engine submenu now includes an option to use the Free-Threaded version if is available.  It also allows you to easily switch between the standard and free-threaded version.


To get an idea of the performance benefits from using free-threaded python, here are the the results of running the benchmark code of the RealPython article without/with free-threading:

*** Python 3.13.0 (tags/v3.13.0:60403a5, Oct  7 2024, 09:38:07) [MSC v.1941 64 bit (AMD64)] on win32. ***
>>> =======================================================================
💻 Windows 64bit with 20x CPU cores (Intel64 Family 6 Model 151 Stepping 2, GenuineIntel Little Endian)
🐍 CPython 3.13.0 C:\Python\Python313\python.exe
Free Threading: unsupported
=======================================================================
Running 20 threads...: 15.07s


*** Python 3.13.0 experimental free-threading build (tags/v3.13.0*** Remote Interpreter Reinitialized ***
=======================================================================
💻 Windows 64bit with 20x CPU cores (Intel64 Family 6 Model 151 Stepping 2, GenuineIntel Little Endian)
🐍 CPython 3.13.0 C:\Python\Python313\python3.13t.exe
Free Threading: enabled ✨
========================================================================
Running 20 threads...: 2.81s