请问python启动后是怎样找到模块的目录的?

请问python启动后是怎样找到模块的目录的?

编译了一个python2.4 for arm的版本
放到板上运行是可以运行
简单的print没问题
但是想要import一些东西就不行了
而且好象也不能import当前目录下的模块
所以把一大堆模块拷贝过去也没用
python启动时要import的模块自然也失败


请问要怎样设置参数
python才知道去哪里import模块呢
看看Python Tutorial 6.1.1
http://docs.python.org/tut/node8.html
3q
设置了PYTHONPATH/PYTHONHOME就好了

不过又有新问题
有些模块不是.py文件而是.so文件
这些文件在build的时候没有顺利产生
比如常用time/readline/math都属于这种的
正在阅读'用C为python写模块'这个文章
有结果就来跟大伙汇报

BTW
arm上跑python速度非常慢
有一个递归的程序在pc上跑只要2s
放到arm上需要56s
差距真大呀


QUOTE:
原帖由 bleem1998 于 2006-2-27 15:16 发表
3q
设置了PYTHONPATH/PYTHONHOME就好了

不过又有新问题
有些模块不是.py文件而是.so文件
这些文件在build的时候没有顺利产生
比如常用time/readline/math都属于这种的
正在阅读'用C为python写模块'这个 ...

好啊,等着你的心得

程序的核心,耗费资源的部分应当用C来实现,比如你说的那个递归的部分
1,
python for arm的编译没什么特别的
直接用默认的./configurate就可以了
产生的Makefile稍稍做点修改
把里头的gcc、ar、ranlib、c++都加上前缀
例如
gcc -->  arm-linux-gcc
ar   -->  arm-linux-ar
然后执行make就可以鸟
(中途会遇到一个C语言编译错误,是关于宏的,直接删除掉那一段就可以了,然后继续make)
等make完毕就可以得到'python'的可执行文件
可以直接拿去跑了

2,
python启动时根据PYTHONPATH和PYTHONHOME两个宏去寻找模块
例如我的设定是这样的
export PYTHONPATH='/usr/lib/python24/'
export PYTHONHOME=''
然后去刚才编译python的目录下把'Lib'目录下的东西都拷贝到PYTHONPATH下面
然后启动python
他就会一点警告都么有的启动了

3,
有一些模块是C语言写的
一般放PYTHONPATH/lib-dynload目录下
这些模块就是一些动态连接库
源代码就就放在Modules目录下
暂时还不知道怎样批量编译这些文件
我找到一个笨蛋办法一个一个的编译
编译也很简单只需要两步
比如编译time模块
arm-linux-gcc -I. -I../Include -c time.c
arm-linux-gcc -shared -o time.so time.o
产生的time.so拷贝到板子上的PYTHONPATH/lib-dynload下
然后在python里就可以import time了
其他的模块都差不多
不过math模块没有搞定啊
虽然编译的时候没有问题
但是放到板子上执行import的时候就出现错误了
是一个arm cpu未定义的指令错误
估计也很好解决以后再说

就是这些了
没参考官方文档
估计早有人写了更好的arm移植手册了

BTW
在板子上玩python感觉着实不错
就是速度慢了点
而且有很多模块编译起来很麻烦


QUOTE:
原帖由 wolfg 于 2006-2-27 15:33 发表


好啊,等着你的心得

程序的核心,耗费资源的部分应当用C来实现,比如你说的那个递归的部分

是ARM9的CPU
速度可以和2年前的主流X86抗衡
不过和现在的CPU比就差太多了
一个2秒一个56秒
差距