使用setup.py打包python文件

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文件即可

你可能感兴趣的:(Python,setup.py,python)