IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    janvier 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur de recherches
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2020
    Messages : 24
    Points : 20
    Points
    20
    Par défaut Impossible de charger les librairies classiques Python lors de l'éxécution via Cython
    Bonjour à tous ,

    J'ai développe un petit code de text-mining afin qu'il soit utilisable pour des personnes tierces à partir de maintenant. Mon objectif premier maintenant, est de cacher le code python pour que la personne l'utilisant n'est pas la possibilité de le voir, et donc de le copier/modifier à sa guise, il s'agit donc de protéger mon code.
    On m'a conseillé d'utiliser Cython qui permet de compiler du Python via C (ou C++) avec des fichiers ".c". Après avoir suivi quelques tutoriels, cela n'a pas fonctionné. J'ai donc repris un code ultra basique qui met en avant mon soucis concernant les librairies python, voici mon code et la procédure que j'ai suivi :

    hello.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print("hello world")
    import numpy as np
    print(np.array([1,2,3])
    lignes de commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cython3 --embed -o hello.c hello.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gcc -o hello -fPIC -I /usr/include/python3.6m hello.c -lpython3.6m

    Ces lignes m'ont donc généré un fichier .c et un fichier "hello" que j'éxécute en bash de manière classique. Mon erreur est la suivante :
    Lorsque j'éxécute le code on me retourne le message qui dit que la librairie numpy n'existe pas , exactement comme dans python lorsque ce n'est pas chargé ...
    Mais si j'enlève la partie numpy cela marche tout à fait.

    Ma question est alors : comment faire comprendre (ou importer) les librairie de python classiques (numpy pandas sklearn) à Cython pour que lors de l'éxécution du fichier final cela marche ?

    PS : je suis très très débutant en C.
    PS2 : il s'agit de mon premier post si le sujet n'est pas à la bonne place veuillez m'en excuser !

    Merci à vous !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 17 543
    Points : 30 268
    Points
    30 268
    Par défaut
    Salut,

    Citation Envoyé par -RoCk- Voir le message
    Ma question est alors : comment faire comprendre (ou importer) les librairie de python classiques (numpy pandas sklearn) à Cython pour que lors de l'éxécution du fichier final cela marche ?
    On commence par ouvrir le tuto de Cython où ils expliquent comment faire et on "teste" pour savoir si on a compris ce que çà raconte.

    Citation Envoyé par -RoCk- Voir le message
    PS : je suis très très débutant en C.
    Cython est un outil pour optimiser son code en le ré-écrivant tout ou partie en C.
    Et si on sait "décompiler" un .pyc, on saura aussi "décompiler" un fichier objet (pour autant que çà vaille la peine d'y passer du temps).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur de recherches
    Inscrit en
    janvier 2020
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur de recherches
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2020
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    On commence par ouvrir le tuto de Cython où ils expliquent comment faire et on "teste" pour savoir si on a compris ce que çà raconte.
    Merci pour la réponse,
    justement j'ai tenté de suivre ce types de tutos ... Mais l'exemple donné dans le lien le code python contient le language C/C++, ils ré-écrivent la fonction dans la language, puis importent le module depuis python ...
    Serais-je obligé de ré-écrrire tout mon code en C ? Sachant que la l'exemple et pour Numpy mais j'ai beaucoup d'autres librairies, je vois mal comment je pourrai y arriver

    Merci de ton aide !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 17 543
    Points : 30 268
    Points
    30 268
    Par défaut
    Salut,

    Citation Envoyé par -RoCk- Voir le message
    Serais-je obligé de ré-écrrire tout mon code en C ? Sachant que la l'exemple et pour Numpy mais j'ai beaucoup d'autres librairies, je vois mal comment je pourrai y arriver
    Votre soucis est dans cython3 --embed qui génère du C auquel il faudra donner toutes les bibliothèques dont il dépend. La seule documentation qu'il y ait la dessus, c'est juste l'architecture d'un projet

    Alors que vous pourriez fabriquer un .pyx et utiliser cython pour fabriquer une DLL appelée (importée) depuis un script Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Impossible de charger les modules PHP
    Par houpli dans le forum Apache
    Réponses: 10
    Dernier message: 30/12/2009, 09h31
  2. Impossible de charger les valeurs d'un combobox
    Par philoflore dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 08/07/2008, 10h01
  3. impossible de trouver les librairies OpenGL
    Par platypus51 dans le forum OpenGL
    Réponses: 8
    Dernier message: 06/08/2007, 16h18
  4. [Configuration] Impossible de charger les extensions
    Par Halukard dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 06/06/2006, 23h11
  5. [SERVLET][JDBC] Impossible de charger les pilotes
    Par cedric.picard dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/10/2004, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo