2017-09-30 12 views
0

I am running everything on bash on windowsL'importation du module de journalisation dans Cython échoue en raison d'une erreur d'attribut

Voici ce que je fais. J'ai un fichier model.py que je suis en train d'optimiser à l'aide cython. J'ai fait une copie de ce fichier et renommé la copie au model.pyx. J'ai ajouté un tas d'importations dans ce nouveau fichier pyx. Le nouveau fichier ressemble un peu à ceci:

import pyximport 
pyximport.install(pyimport=True) 

import cython 
cimport cython 

import numpy as np 
cimport numpy as np 

import logging 
import time 

DTYPE = np.float64 
ctypedef np.float64_t DTYPE_t 
... 

Maintenant, je compilez à un fichier .so en utilisant la méthode setup.py standard qui me donne model.so. Maintenant, quand j'essaie d'utiliser ce modèle dans un nouveau script python, il me donne l'erreur suivante:

File "/usr/local/lib/python2.7/dist-packages/pyximport/pyximport.py", line 419, in load_module 
    return load_module(fullname, source_path, so_path=so_path, is_package=is_package) 
    File "/usr/local/lib/python2.7/dist-packages/pyximport/pyximport.py", line 233, in load_module 
    exec("raise exc, None, tb", {'exc': exc, 'tb': tb}) 
    File "/usr/local/lib/python2.7/dist-packages/pyximport/pyximport.py", line 216, in load_module 
    mod = imp.load_dynamic(name, so_path) 
    File "__init__.py", line 77, in init logging.__init__ 
ImportError: Building module logging failed: ["AttributeError: 'NoneType' object has no attribute 'co_filename'\n"] 

Je ne sais pas où je vais mal. J'ai beaucoup cherché sur google mais je n'ai pas pu trouver quelqu'un face à une erreur similaire ou similaire. Toute aide appréciée!

+0

Il va y avoir des problèmes si vous avez un fichier '' model.py' et model.pyx' le même répertoire. Renommez ou supprimez 'model.py' du répertoire et n'utilisez pas pyximport dans le fichier' .pyx'. pyximport est fait dans un fichier Python qui importe un module Cython. Je suggère d'utiliser un fichier 'setup.py' de toute façon. –

+0

Salut j'ai oublié de mentionner cela dans ma question. J'ai renommé le 'model.py' en' model_org.py' dans le dossier. Mais supprimer 'pyximport' du fichier cython a corrigé l'erreur. Merci! –

Répondre

0

Ne pas utiliser pyximport dans le fichier .pyx. pyximport est utilisé dans un fichier Python qui importe un module cython, voir le documentation of Cython.