OVH Cloud OVH Cloud

[Pyrex] Accéder à l'API de Lotus Domino

3 réponses
Avatar
jeremy
Bonjour

Tout d'abord je tiens à préciser que ce que je cherche à faire est
simplement dans le but d'apprendre à utiliser pyrex, et pour cela
j'essaye de l'utiliser sur un API qui me serait eventuellement utile.

Je cherche à accéder à l'api c++ de lotus domino depuis des scripts python.
Je suis totalement débutant en C++ (j'ai à peine quelques notions de C)

Actuellement j'essaye de mettre au point le script de setup mais je
n'arrive pas.
Pour le moment la seule chose que je cherche à faire est de compiler un
module qui ne fait rien.
Je veux juste le compiler avec l'entête lncppapi.h

Si je lance le setup j'ai droit à un beau :
d:\notescpp\include\lnglosym.h(67) : fatal error C1189: #error : ERROR:
No plat
form specified.
error: command '"D:\microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe"'
failed wi
th exit status 2

J'ai donc recherché sur google et j'en ai conclus qu'il fallait que
j'ajoute la ligne :

define_macros=[("W32",None)],

mais dans ce cas j'ai droit à un très beau (si si j'insiste) :
C:\Python24\lib\distutils\dist.py:236: UserWarning: Unknown
distribution option:
'define_macros'

j'avoue que je suis un peu perdu ... quelqu'un voit il ce que je foire ?


###############setup.py#################

from distutils.core import setup
from distutils.extension import Extension
from Pyrex.Distutils import build_ext

setup(
name = 'notes',
ext_modules=[Extension("notes",["notes.pyx"]),],
include_dirs=["d:\\notescpp\\include\\"],
define_macros=[("W32",None)],
cmdclass = {'build_ext': build_ext}
)

###############Notes.pyx#################
C:\temp\pyrex\Pyrex-0.9.3.1\Demos>type notes.pyx

cdef extern from "lncppapi.h":
pass

cdef class Lotus:

def __new__(self):
self.amount = 0

def __dealloc__(self):
print self.amount, "plus de lotus"

def describe(self):
print self.amount, "Module API Lotus"

3 réponses

Avatar
Amaury Forgeot d'Arc
Bonjour

Tout d'abord je tiens à préciser que ce que je cherche à faire est
simplement dans le but d'apprendre à utiliser pyrex, et pour cela


Ma réponse est donc totalement hors sujet...
Je la donne quand même.

j'essaye de l'utiliser sur un API qui me serait eventuellement utile.

Je cherche à accéder à l'api c++ de lotus domino depuis des scripts python.
Je suis totalement débutant en C++ (j'ai à peine quelques notions de C)


Parmi nos outils, nous utilisons avec succès les objets COM de Lotus
Notes, via le module win32com.
Et mis à part la syntaxe python, le code (surtout les appels aux
fonctions) ressemble furieusement au langage LotusScript...

Si nécessaire, je peux poster des exemples.

--
Amaury

Avatar
Amaury Forgeot d'Arc
...
J'ai donc recherché sur google et j'en ai conclus qu'il fallait que
j'ajoute la ligne :

define_macros=[("W32",None)],

mais dans ce cas j'ai droit à un très beau (si si j'insiste) :
C:Python24libdistutilsdist.py:236: UserWarning: Unknown
distribution option:
'define_macros'

j'avoue que je suis un peu perdu ... quelqu'un voit il ce que je foire ?
...

setup(
name = 'notes',
ext_modules=[Extension("notes",["notes.pyx"]),],
include_dirs=["d:notescppinclude"],
define_macros=[("W32",None)],
cmdclass = {'build_ext': build_ext}
)



Il me semble que tu as mis define_macros au mauvais endroit :
tu l'as mis comme argument à setup(), alors que c'est plutôt une option
de l'Extension().
Essaie quelque chose comme ceci:

setup(
name = 'notes',
ext_modules=[Extension("notes",
["notes.pyx"],
define_macros=[("W32",None)]),
],
include_dirs=["d:notescppinclude"],
cmdclass = {'build_ext': build_ext}
)

Avatar
jeremy
Il me semble que tu as mis define_macros au mauvais endroit :
tu l'as mis comme argument à setup(), alors que c'est plutôt une option
de l'Extension().
Essaie quelque chose comme ceci:

setup(
name = 'notes',
ext_modules=[Extension("notes",
["notes.pyx"],
define_macros=[("W32",None)]),
],
include_dirs=["d:notescppinclude"],
cmdclass = {'build_ext': build_ext}
)


Bien vu c'était bien ca
Pour ce qui est de COM je l'utilise déjà mais, ayant à intervenir autant
sur linux que sur windows, je cherche quelque chose de plus global.

Merci Beaucoup

Jérémy