ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / Windows functions / Python functions
  • Overview
  • Caution
  • Code samples
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
Overview
WLanguage supports Python functions in native mode (for more details, see Python: Native calls). You can also execute Python functions via WLanguage functions.
Several functions are available:
PythonAddPathAdds the path of a directory or the path of the virtual environment to search for Python modules.
PythonExecuteExecutes a function present in a Python module.
PythonInitializeSpecifies the location of the Python DLL to be loaded.
PythonTerminateUnloads the Python DLL and frees memory.

Caution

  • The ".py" modules must be accessible on disk, in the folder of the deployed executable, or in the location specified with PythonAddPath. The ".py" modules cannot be found if they are embedded in the executable library.
  • Python is case-sensitive. The module and function names must be written using correct upper and lower case characters.
Code samples
Example 1:
// Initialize the Python interpreter
PythonInitialize(PYTHON_INSTALL_PATH + "\Python39\python3.dll")
// Declare the import paths of the modules used
PythonAddPath("D:\source.test\pythonProject\venv\Lib\site-packages")
PythonAddPath("D:\source.test\pythonProject")
// Solve 5x³+x²-3x+2=0
sEquation is string = "5*x**3+x**2-3*x+2"
sListRoot is string = PythonExecute("main", "solver", sEquation)
nNbRoot is int = StringCount(sListRoot, ",") + 1
Trace("The ""[%sEquation%]"" equation admits [%nNbRoot%] roots:")
FOR n = 1 _TO_ nNbRoot
	Trace("r[%n%] = [%ExtractString(sListRoot, n, "", "")%]")
END
Example 2:
sPythonModule is string 
<IF ExecutionTarget=Windows>
	// Example of a Python module location
	// The name of the Python module can be different
	sPythonModule = SysDir(srLocalAppData) + ..
				[fSep]+"Programs\Python\Python39\python39.dll"
<ELSE>
	<IF ExecutionTarget=Linux>
	// Example of a Python module location
	// The name of the Python module can be different 
	// (depends on the version of Python, the Linux distribution)
	sPythonModule ="/usr/bin/python/python39.so"
	<END>
<END>
IF NOT PythonInitialize(sPythonModule) THEN
	// In this case, you must: 
	// Check the path 
	// Check that the compilation mode (32/64-bit) matches the runtime mode
	Error("Python initialization error", ErrorInfo())
	RETURN
END
Info(HelloWorldImportedPythonFunction())
// With an imported Python file (.py) in the project that contains:
// def HelloWorldImportedPythonFunction():
//    return "Hello World!";

IF NOT PythonAddPath(fDataDir()) THEN
	Error("Unable to initialize Python path", ErrorInfo())
	RETURN
END
// "python_file.py" must be in the directory
// specified by PythonAddPath. 
// In this example, this directory is the data directory 
Info(PythonExecute("python_file", "HelloWorldPythonFunctionNotImported"))

PythonTerminate()
Related Examples:
WD Python Training (WINDEV): WD Python
[ + ] This example shows how to run Python code in WINDEV applications.
Prerequisite: Python 3 must be installed on the computer. To get Python 3, go to http://legacy.python.org/download/
Minimum version required
  • Version 27
This page is also available for…
Comments
IMPORTANTE
Hello Guys!

Para resolver a compilação do Python pelo Webdev voce tera que fazer o seguinte ajuste:

https://hostimage.windev.io/images/BUG64_c5a2a700bcd82b0dcceab7c195f4fad7.png

Na versao inglesa
C:\PCSOFT\WEBDEV 29\Programs\Engine

Na versão francesa
C:\PCSOFT\WEBDEV 29\Programmes\Moteur

Copiar tudo da pasta 64 e colar na pasta 32

C:\PCSOFT\WEBDEV 29\Programs\Engine\Win64x86
para
C:\PCSOFT\WEBDEV 29\Programs\Engine\Win32x86

Substituir tudo

Testar novamente o teu projeto Python vai funcionar.

Abri chamado informado do ocorrido quem sabe em futuras versoes isso esteja resolvido.

Por algum motivo o Python busca pela pasta 32 em vez de buscar pela pasta 64.

Espero ter ajudado.
Boller
25 May 2024
IMPORTANTE
PARA FUNCIONAR NO WEBDEV

É necessário setar corretamente o caminho do modulo python, para executar uma função em um módulo python:

sPythonModule is string

<IF ExecutionTarget=Windows>

sPythonModule = SysDir(srLocalAppData) + ..
[fSep]+"Programs\Python\Python39\python39.dll"

END
Boller
13 May 2024

Last update: 05/14/2024

Send a report | Local help