Settings ExternalToolsSettings/en

Aus expecco Wiki (Version 2.x)
Zur Navigation springen Zur Suche springen
Python2 and Python3 Settings[Bearbeiten]

Be aware that there exist two partially incompatible python versions (2.x and 3.x) and there exist packages which are compatible with both and also packages which need a particular version. Although Python2.x is about to be obsoleted now, there are still older packages/applications around, which have not yet been ported to 3.x. Expecco deals with this situation by allowing you to specify which python interpreter to be used for your actions and also to have multiple interpreters (with different versions) running in parallel.

You can skip this section, iff all of your python modules run in Python3.x and only specify one single path/module setup in the top area of the settings dialog (named "Python")

Due to some bad planning in the python community, there were a number of changes between python2.x and python3.x, which may (and usually do) make scripts written for either version incompatible with the other. For example, the following print expression from python2:

print "Hello World from a Python2 script\n"

needs parentheses in python3:

print ("Hello World from a Python2 script\n")

and will lead to a syntax error if executed in python3.

Although it is a good idea to use Python3 (because Python2 is going to be obsolete soon), there are many open-existing libraries for Python2 around. Thus, it may be necessary to specify an explicit interpreter version to be used for python script actions.

If all of your actions depend on the same python interpreter version, it is sufficient to ensure that either the "PYTHON_SHELL" variable is set correctly, or the "Python Path" is defined in the settings to point to the correct interpreter.

However, if you have mixed version scripts (for example, when importing python actions written by another team, which used a different version), you have to specify the python interpreter explicitly for some of the actions.

You can either specify the version in the elementary action itself (language menu for bridged actions or #PYTHON-comment in script actions) or provide the version information dynamically without touching the action itself. The later is a bit more complicated to use, but required if you do not want to modify imported actions.

For this, expecco contains 3 setting fields for the python interpreter: "Python Cmd Path" in the settings or "PYTHON_SHELL" in the shell environment, which are used when no explicit version is required, or if all of your script require the same python version, "Python2 Cmd Path" in the settings (or "PYTHON2_SHELL"), which are used for scripts which have been marked as explicitly requiring python2 and "Python3 Cmd Path" in the settings (or "PYTHON3_SHELL") for scripts which are marked to require python3.

The python version requirements are defined in the environment of the suite/imported library in which the action is defined: a variable named "PYTHON_VERSION", which should be an integer with either "2" or "3" as value specifies the version to be used for ALL of the python actions within that library. Notice, that the environment of the project from which the action was imported is relevant here - not the active environment at execution time, or the suite's top environment. This version number then determines, which of the above setting is to be used (i.e. PYTHON2_SHELL/path or PYTHON3_SHELL/path).

Using that double-indirect mechanism, it is still possible to:

  • import multiple libraries with different python-versions requirements
  • specify the paths independent of where the python interpreters are installed (i.e. the machine on which the final suite is executed may have different installation paths than the machine on which the imported libraries were developed).

A concrete demo importing libraries which require different python interpreter versions is found in "d46_Suite_using_both_Python2_and_Python3_actions.ets" in the demo folder.

Notice:
In expecco 19.2, you can also choose the python version in the code editor's language chooser.



Copyright © 2014-2024 eXept Software AG