首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cython‘模块’对象没有属性

Cython‘模块’对象没有属性
EN

Stack Overflow用户
提问于 2016-01-08 19:12:07
回答 1查看 2.1K关注 0票数 0

在我的pyx文件中,我定义了两个C函数并由python函数包装。它成功地完成了编译,并输出了一个名为Rand_Motion.cpython-34m.so的文件。但是,我无法使用导入Rand_Motion访问主文件中的pyx文件中定义的两个函数。这是我的Rand_Motion.pyx

代码语言:javascript
复制
cdef extern from "math.h":
    float cosf(float theta)  
    float sinf(float theta)          
    float acosf(float theta)    
    float sqrt(float x)

cdef object randmotion_c(int Dimension,float Diffcoe, float pos_x,float pos_y, float pos_z,float drift_l,float drift_a,float drift_b,float a,float b):
    cdef float length=sqrt(2*Dimension*Diffcoe)
    cdef float pi= 3.1415926535
    cdef float e=  2.7182818284
    cdef float a_d=a*2*pi
    cdef float b_d=acosf(1-b*2)

    pos_x+=length*sinf(b_d) *cosf(a_d)
    pos_y+=length*sinf(b_d) *sinf(a_d)
    pos_z+=length*cosf(b_d)    

    if  drift_l>0:
        drift_a=(drift_a/180)*pi
        drift_b=(drift_b/180)*pi
        pos_x+=drift_l*sinf(drift_a) *cosf(drift_b)
        pos_y+=drift_l*sinf(drift_a) *sinf(drift_b) 
        pos_z+=drift_l*cosf(drift_a)        
    return pos_x,pos_y,pos_z

def randmotion(Dimension,Diffcoe, pos_x,pos_y,pos_z,drift_l,drift_a,drift_b,a,b):

    return randmotion_c(Dimension,Diffcoe, pos_x,pos_y,pos_z,drift_l,drift_a,drift_b,a,b)

cdef dis_cal_c(float x,float y,float z):
    return sqrt(x*x+y*y+z*z)

def dis_cal(x,y,z):
    return dis_cal_c(x,y,z) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-08 20:13:19

我将您的代码复制/粘贴到一个aaa.pyx文件中,然后运行:

代码语言:javascript
复制
mgc@mgc-X:~/code/test$ cythonize aaa.pyx
mgc@mgc-X:~/code/test$ gcc -shared -fPIC -fwrapv -O2 -Wall -I/usr/include/python3.4 -o aaa.so aaa.c
mgc@mgc-X:~/code/test$ python3
Python 3.4.3 (default, Mar 26 2015, 22:03:40) 
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from aaa import randmotion, dis_cal
>>> dis_cal(1,2,3)
3.7416573867739413

而且它似乎工作得很好(请注意,我在与共享对象相同的目录中运行python )。也许你想安装你的共享库?看看有关编译的cython文档关于安装模块的python文档

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34684354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档