Écrit par

Sales Engineer at InterSystems
Article Sylvain Guilbaud · Fév 28 1m read

Évitez d'utiliser un package nommé « code » avec des méthodes Python intégrées utilisant [Language = python]

Bonjour,

Comme il m'a fallu un certain temps pour comprendre d'où venait le problème, je voudrais partager cette expérience, afin que vous ne tombiez pas dans le même piège.

Je viens de remarquer que si vous nommez votre package "code" (tout en minuscules), dans une classe utilisant du python intégré en utilisant [Language = python], vous aurez l'erreur suivante :

 <THROW> *%Exception.PythonException <PYTHON EXCEPTION> 246 <class 'ModuleNotFoundError'>: No module named 'code.basics'; 'code' is not a package

Class code.basics Extends%RegisteredObject
{

ClassMethod Welcome() As%Status [ Language = python ]
{
print('Welcome!')
return True
}
}
IRISAPP>w##class(code.basics).Welcome()

W##CLASS(code.basics).Welcome()
^
<THROW> *%Exception.PythonException <PYTHON EXCEPTION> 246 <class 'ModuleNotFoundError'>: No module named 'code.basics'; 'code' is not a package

Cela fonctionne bien avec "Code" :

Class Code.basics Extends%RegisteredObject
{

ClassMethod Welcome() As%Status [ Language = python ]
{
print('Welcome!')
return True
}
}
IRISAPP>w##class(Code.basics).Welcome()
Welcome!
1