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

Bibliothèques tierces Python Discussion :

[pycan] mauvais argument dans spawnv [Python 3.X]


Sujet :

Bibliothèques tierces Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [pycan] mauvais argument dans spawnv
    Bonjour,

    Je suis étudiant en maths spé, et dans le cadre d'un projet scientifique, j'ai besoin d'utiliser le module pycan ( http://www.f-legrand.fr/scidoc/docmm...y/interpy.html ) sous Python, de préférence avec Spyder.

    Sur l'un des ordinateurs Windows XP 32bits du lycée, j'ai réussi à installer le module via pycan-3.1.win32-py3.3.exe du lien précédent, puis à l'utiliser normalement.
    Je souhaite le faire sur mon portable (plus pratique), sous Windows 8 64bits. J'ai donc installé WinPython 32bits 3.3 (en plus du WinPython 64 bits que j'avais déjà), et j'ai exécuté le fichier pycan-3.1.win32-py3.3.exe du lien précédent. Cet installeur ne trouve pas Python 3.3 (et plante même sur certains ordi 32 bits du lycée...). Je suis donc contraint d'installer le module manuellement, via le fichier pycan-3.1.zip .

    Le fichier d'installation setup.py est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    # -*- coding: utf-8 -*-
    from distutils.core import setup, Extension
    from distutils import ccompiler
    import numpy
    import os
    import sys
    numpy_include = numpy.get_include()
     
    version = ("PYTHON2",None)
    if sys.version_info.major==3:
        version = ("PYTHON3",None)
     
    # Prérequis : pthread32 (http://www.sourceware.org/pthreads-win32)
    # Installer la version précompilé
    # Ajouter le chemin de pthread\Pre-built.2\include à la variable INCLUDE ou bien modifier le chemin ci-dessous
    pthread_include = 'C:\PYTHON\pthreads-w32-2-9-1-release\Pre-built.2\include'
    # Ajouter le chemin de pthread\Pre-built.2\lib à la variable DIR ou bien modifier le chemin ci-dessous
    pthread_lib = 'C:\PYTHON\pthreads-w32-2-9-1-release\Pre-built.2\lib\x86'
     
    module_pysysam = Extension(name="pycan.pysysam",
        sources=['pysysam.c','sysamSP5Link.c','sysamPCILink.c'],
        include_dirs=[numpy_include,pthread_include],
        library_dirs=[pthread_lib],
        libraries=['pthreadVC2'],
        define_macros=[version])
    # placer pthreadVC2.dll manuellement dans le build avant l'installation
    setup(name="pycan",
        version = "3.1",
        description= "Interface Python pour Sysam Eurosmart PCI et SP5",
        author = "Frederic Legrand",
        author_email = "fredlegr@club-internet.fr",
        url="www.f-legrand.fr",
        license="CeCILL",
        platforms=["MS windows"],
        packages=['pycan'],
        ext_modules=[module_pysysam])
    J'ai suivi les consignes, avant de lancer l'installation dans l'invite de commande de WinPython par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C:\Program Files (x86)\WinPython-32bit-3.3.5.5\python-3.3.5>cd c:\PYTHON\pycan-3
    .1
     
    c:\PYTHON\pycan-3.1>python setup.py install
    Ce à quoi, Python déroule l'installation jusqu'à l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      File "C:\Program Files (x86)\WinPython-32bit-3.3.5.5\python-3.3.5\lib\distutil
    s\spawn.py", line 67, in _spawn_nt
        rc = os.spawnv(os.P_WAIT, executable, cmd)
    TypeError: spawnv() arg 2 must contain only strings
    Ce n'est pas le premier message d'erreur auquel je suis confronté, mais c'est sans aucun doute celui qui va me donner le plus de fil à retordre : en allant fouiller dans spawn.py, on trouve dans la définition de _spawn_nt (lignes 57 à 75) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    def _spawn_nt(cmd, search_path=1, verbose=0, dry_run=0):
        executable = cmd[0]
        cmd = _nt_quote_args(cmd)
        if search_path:
            # either we find one or it stays the same
            executable = find_executable(executable) or executable
        log.info(' '.join([executable] + cmd[1:]))
        if not dry_run:
            # spawn for NT requires a full path to the .exe
            try:
                rc = os.spawnv(os.P_WAIT, executable, cmd)
            except OSError as exc:
                # this seems to happen when the command isn't found
                raise DistutilsExecError(
                      "command '%s' failed: %s" % (cmd[0], exc.args[-1]))
            if rc != 0:
                # and this reflects the command running but failing
                raise DistutilsExecError(
                      "command '%s' failed with exit status %d" % (cmd[0], rc))
    donc le problème vient de l'argument executable de la fonction spawnv, qui doit être un strings et qui d'après mon message d'erreur ne l'est pas. Mon problème est que je ne sais pas du tout comment avoir prise sur lui. Rien que le fait qu'il soit initialisé par executable=cmd[O] me laisse penser qu'il dépend d'autres objets, peut-être même d'autres fichiers ?

    Merci

    (Ceci est mon premier post. J'attends vos remarques, quel qu'elles soient. En particulier :
    • pour mon message d'erreur et/ou pour le fichier spawn.py, dois-je citer plus de code ?
    • suis-je dans la bonne section du forum ?)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par Franito Voir le message
    Je souhaite le faire sur mon portable (plus pratique), sous Windows 8 64bits. J'ai donc installé WinPython 32bits 3.3 (en plus du WinPython 64 bits que j'avais déjà), et j'ai exécuté le fichier pycan-3.1.win32-py3.3.exe du lien précédent. Cet installeur ne trouve pas Python 3.3 (et plante même sur certains ordi 32 bits du lycée...).
    Ca serait bien de lire le document d'installation de WinPython. Tout en bas, on vous explique comment déclarer ce Python là dans la registry Windows. Cela fait, l'installer devrait "trouver" Python 3.3

    Citation Envoyé par Franito Voir le message
    Je suis donc contraint d'installer le module manuellement, via le fichier pycan-3.1.zip
    Mettre au point une toolchain, trouver les dépendances, et les bons switchs pour compiler çà est un travail "ardu". Soit vous savez le faire, soit vous avez la chance de trouver un tuto. bien fait expliquant comment réaliser chaque étape,...
    A défaut, il est préférable d'essayer d'installer les binaires.

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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ca serait bien de lire le document d'installation de WinPython. Tout en bas, on vous explique comment déclarer ce Python là dans la registry Windows. Cela fait, l'installer devrait "trouver" Python 3.3
    Je ne connaissais pas ce WinPython Control Panel, décrit dans le document que vous avez joint, et je le regrette vivement...
    Sans même avoir eu à déclarer mon Python 32bits dans la registry Windows (en vue d'utiliser l'installer), j'ai ajouté le package par un glisser-déposer de mon fichier setup.py dans l'onglet prévu à cet effet, puis j'ai simplement lancé l'installation, qui s'est faite directement (attention quand même : je pense qu'il est nécessaire de suivre les étapes préliminaires que j'ai évoquées en ouvrant cette discussion). Je ne peux pas l'essayer pour l'instant puisque le module s'utilise avec un convertisseur analogique-numérique que je n'ai pas sous la main, mais il est bien présent dans site-packages, et les import fonctionnent.

    Merci beaucoup !

    (Le problème, titre de cette discussion, n'a plus lieu d'être, mais n'est pas pour autant "résolu".)

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je marque quand même la discussion comme "résolue" car s'il n'y a plus de problème, il n'y plus de réponse à apporter, et ce marquage permet justement de le signaler au lecteur.

    Bon courage pour ce projet !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Saisie d'arguments dans la ligne de commande
    Par sangei dans le forum Général Java
    Réponses: 20
    Dernier message: 06/12/2009, 16h08
  2. nombre d'arguments dans un ... avec va_list
    Par delfare dans le forum C
    Réponses: 5
    Dernier message: 24/01/2006, 09h20
  3. [Tableaux] double argument dans un lien
    Par ptit_bou dans le forum Langage
    Réponses: 4
    Dernier message: 15/01/2006, 01h21
  4. [Struts] Passer un argument dans un property
    Par Malaussene dans le forum Struts 1
    Réponses: 4
    Dernier message: 07/09/2004, 10h11
  5. [C#] Arguments dans Projet VS
    Par MALAGASY dans le forum EDI/Outils
    Réponses: 3
    Dernier message: 07/07/2004, 15h32

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