setup.py
# coding: utf-8
from setuptools import setup
setup(
name = "Test",
py_modules = ['my_test', 'great_class'],
entry_points = {
'console_scripts': ['Test = my_test:fun']
},
data_files = ['_great_class.so'] # 指定其他的一些文件(如配置文件)
)
setup(
name = "Test2",
py_modules = ['my_test2'],
entry_points = {
'console_scripts': ['Test2 = my_test2:fun']
}
)
great_class.h
#ifndef GREAT_CLASS
#define GREAT_CLASS
class Great {
private:
int s;
public:
void setWall(int _s) {
s = _s;
}
int getWall() {
return s;
}
};
#endif //GREAT_CLASS
great_class.i
%module great_class
%{
#include "great_class.h"
%}
%include "great_class.h"
通过swig生成_great_class.so文件
mytest.py
#!/usr/bin/env python
import great_class
def fun():
c = great_class.Great()
c.setWall(5)
print c.getWall()
if __name__ == '__main__':
fun()
mytest2.py
#!/usr/bin/env python
def fun0(a):
print "wo jiu shi shi", a
def fun():
a = "miao"
fun0(a)
if __name__ == '__main__':
fun()
执行命令: python setup.py install
Python 库打包分发(setup.py 编写)简易指南: http://blog.konghy.cn/2018/04/29/setup-dot-py/
Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法:http://lovesoo.org/python-script-error-attributeerror-module-object-has-no-attribute-solve-method.html
查看import库的源文件,发现源文件存在且没有错误,同时存在源文件的.pyc文件
问题解决方法:
1. 命名py脚本时,不要与python预留字,模块名等相同
2. 删除该库的.pyc文件(因为py脚本每次运行时均会生成.pyc文件;在已经生成.pyc文件的情况下,若代码不更新,运行时依旧会走pyc,所以要删除.pyc文件),重新运行代码;或者找一个可以运行代码的环境,拷贝替换当前机器的.pyc文件即可