python程序移植到linux_python程序怎么移植到linux嵌入式开发板 - CSDN
精华内容
参与话题
  • 移植Python2.7ARM-LINUX嵌入式平台

    千次阅读 2017-07-18 09:37:30
    笔者长期在ARM-LINUX嵌入式平台使用C语言开发。硬件IO操作只能用C确实没办法,但是应用程序用C简直就苦了个逼了,...自从把Python移植到嵌入式平台,用C写完IO的Python扩展库然后用Python写应用程序完全就是摧枯拉朽

    笔者长期在ARM-LINUX嵌入式平台使用C语言开发。硬件IO操作只能用C确实没办法,但是应用程序用C简直就苦了个逼了,程序复杂一点,各种越界、指针错误、诡异死机、segment fault、内存泄漏、core dump、编译找不到头文件、依赖库,解析个字符费老劲,轮子太少纯靠白手起家。自从把Python移植到嵌入式平台,用C写完IO的Python扩展库然后用Python写应用程序完全就是摧枯拉朽般存在。

    • Python版本:2.7.3
    • 交叉编译器:arm-none-linux-gnueabi-
    • 硬件平台:AT91 ARM9、NUC97x、TI AM335x

    源码下载&解压

    wget https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz
    xz -d Python-2.7.3.tar.xz
    tar xvf Python-2.7.3.tar

    编译HOST版解释器

    编译Python的嵌入式版需要解释器解析setup.py从而编译Python的模块,因此需要先编译出HOST的解释器。

    ./configure
    make python Parser/pgen
    mv  python  hostpython
    mv  Parser/pgen  Parser/hostpgen
    make distclean

    打交叉编译补丁

    点击下载补丁

    patch -p1 < Python-2.7.3-xcompile.patch

    交叉编译配置

    设置交叉编译工具链为arm-none-linux-gnueabi,编译生成的执行文件存放目录为当前目录的_install文件夹。

    ./configure --host=arm-none-linux-gnueabi --prefix=$PWD/_install

    编译&安装

    make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes
    make install HOSTPYTHON=./hostpython BLDSHARED="arm-none-linux-gnueabi-gcc-shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=$PWD/_install

    执行完以上命令之后在_install中产生bin lib include share 4个文件夹,避免麻烦可以将以上命令写成一个脚本。

    目标板文件拷贝

    将_install/bin 中的所有内容拷贝到目标板的任意环境变量能够访问到的目录即可,推荐/bin、/usr/bin。

    将_install/lib 中的所有内容拷贝到目标板/lib中

    将_install /include 中的所有内容拷贝到目标板/include中。因为其中的某些头文件是Python环境所需要的,比如Python解释器启动依赖于pyconfig.h,import time模块时依赖timefuncs.h。

    环境变量设置

    将python2.7路径加入到环境变量 PYTHONHOME、PYTHONPATH中。

    如果是/etc/profile,在文件末尾添加如下信息然后执行 source /etc/profile。

    export PYTHONPATH=/lib/python2.7:$PYTHONPATH
    export PYTHONHOME=/lib/python2.7:$PYTHONHOME

    如果是命令行,执行如下:

    export PYTHONPATH=$PYTHONPATH:/lib/python2.7
    export PYTHONHOME=$PYTHONHOME:/lib/python2.7

    验证目标板Python

    打开解释器,import 一些常用模块,编写程序测试。


    后记

    可能import time、datetime、threading、multiprocessing时提示缺少time、_collections、itertools等模块。

    这些是 builtin 模块,可以通过sys.builtin_module_names查看。其源码在Modules目录中,编译完成以 .so 的形式存放在/lib/python2.7/lib-dynload中。

    首先在setup.py中 disabled_module_list=[] 是否将这些模块disabled掉了。

    如果依然无法解决,则在Modules/config.c中参考其他模块的写法添加代码,手动编译即可在build/lib.xx.2.7目录中产生 .so 文件。


        

    
    展开全文
  • Python环境迁移

    千次阅读 2018-11-17 20:19:34
    由于我的程序python2.7)因为课程要求要移植到别的电脑上运行,但是别人的电脑上没有python(2.7)的环境以及相关的库,还不好意思在别人的电脑上配一个环境,万一破坏了别 人的PC环境不太好,最后有一个十分笨的...

    由于我的程序(python2.7)因为课程要求要移植到别的电脑上运行,但是别人的电脑上没有python(2.7)的环境以及相关的库,还不好意思在别人的电脑上配一个环境,万一破坏了别 人的PC环境不太好,最后有一个十分笨的方法,对于以后懒得配环境的人很实用,但是需要临时跑一下的很实用。

    1. 直接将配好的环境,我使用的是anaconda, 将全部的安装目录整体拷贝到另外一台电脑上。以我的为例,我直接拷贝到了桌面上,叫做python2.7

    在这里插入图片描述

    1. 然后再另一台的电脑的cmd中进入你拷贝的目录下
      在这里插入图片描述

    2. 运行python.exe +你要运行的文件的绝对路径 就可以运行你原来不能运行的文件了。如下图所示。
      在这里插入图片描述

    3. 输入python还可以直接进入Python2.7, 对于以后只要临时使用,不想配环境的时候很实用。输入python还可以直接进入Python2.7, 对于以后只要临时使用,不想配环境的时候很实用。

    在这里插入图片描述

    展开全文
  • python移植到arm

    2014-06-06 14:05:46
    Python-2.7.3: 1. make peng()  mkdir build.pc

    from:  http://www.2cto.com/kf/201305/208310.html


    1、交叉编译之前要确定PC上安装对应版本的python

    2、下载python http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2
    3、解压 tar xjvf Python-2.7.tar.bz2
    4、由于在编译python的时候,需要先编译一个叫pgen的程序出来,用于生成语法解析器,所以要先生成一个pc版本的pgen:
    mkdir build.pc
    cd build.pc
    ../configure
    make Parser/pgen
    然后ls Parser一下,应该就能看到有pgen了。

    5、配置:

    ./configure --prefix=/home/pub/johnny/xbmc/python_install --host=mips-linux-gnu "CC=mips-linux-gnu-gcc -EL" "CFLAGS=-EL" "LDFLAGS=-EL" --enable-shared --disable-readline --disable-dynamic-extensions

    6、修改setup.py
    detect_modules函数:
    函数的前两行是把/usr/local加到搜索目录中,我们的cross compiler一般不会直接安装在 /usr/local里面的,所以这两行去掉:
            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
            add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')

    7、之后就要对Makefile做一些修改:
    (1)把
    # OPT=            -DNDEBUG -g -O3 -Wall -Wstrict-prototypes
    OPT=        -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
    一行中,去掉-g,我们不要debug python,-O3改为-O2,空间紧张O2就可以了。
    (2)在:
    PGEN=           Parser/pgen$(EXE)
    一行的下面加上:
    PGEN_HOST=      build.pc/Parser/pgen$(EXE)
    表明我们在HOST上运行的pgen。
    (3)在要使用PGEN的地方改为PGEN_HOST:
    $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
                    -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
    改为:
    $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
                    -$(PGEN_HOST) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
    (4)修改所有使用新生成的python的地方。
    所有如 ./$(BUILDPYTHON) 的地方,都改为python,如:
    platform: $(BUILDPYTHON)
            $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
    改为:
    platform: $(BUILDPYTHON)
            $(RUNSHARED)  python  -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
    这种地方比较多,共16处,需小心修改。

    8、make 出现错误:
    Include/pyport.h:243: error: #error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG"
    修改pyconfig.h: 找到#undef PY_FORMAT_LONG_LONG 处加:#define PY_FORMAT_LONG_LONG "ll"
    9、再次make还是有错误,把Lib、Tools和Module目录copy到上一级目录
    10、make,make install
    11、在开发板上通过nfs进入到当前路径执行./python,成功;
    12、编译测试程序:
    mips-linux-gnu-gcc -EL test.c -L. -lpython2.7

    #include "./Include/Python.h"
    int main()
    {
        printf("1111\n");
        Py_Initialize();                            
        PyRun_SimpleString("print 'hi,python!'");      
        Py_Finalize();                              
        return 0;
    }

    13、执行测试程序

    14、只能通过nfs来再开发板上执行,目前还没有找到完全移植到开发板上的办法;



    展开全文
  • 我们可能经常在linux下运行python脚本程序(hello.py)。但如果要将linux环境下的python脚本文件放Windows环境下运行,不能直接运行,那该怎么办呢?  首先,我们要确保我们windows下安装了python编译环境,如:...

           我们可能经常在linux下运行python脚本程序(hello.py)。但如果要将linux环境下的python脚本文件放到Windows环境下运行,不能直接运行,那该怎么办呢?

           首先,我们要确保我们windows下安装了python编译环境,如:Anaconda。安装了opencv,这个在图像处理时需要用到。然后在hello.py中添加:

           1、py文件不支持中文,如果我们文件中有中文注释, 则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码,一般添加在第一行

    # -*- coding:utf-8 -*-

            2、为了系统能够调用opencv,需要将opencv\build\python\2.7\x64文件夹下的cv2.pyd拷贝到Anaconda\libs文件夹下。并在hello.py中添加:

    import sys
    sys.path.append('E:\\Anaconda\\libs')
            修改已经完成。


            下面介绍Windows环境下运行python脚本的方法(假设py文件在G:\python):

            1、开始-->运行-->输入cmd-->确定;

            2、在cmd命令行窗口依次输入:G:(切换到G盘),cd python(进入到python文件夹);

            3、输入:python hello.py(运行文件)。

    展开全文
  • 交叉编译Python3.6.2,使用海思arm-hisiv200-linux-gcc
  • 理解Python的解释型与可移植

    千次阅读 2016-12-31 17:26:14
    解释型是指Python代码是通过Python解释器来将代码"解释"为计算机硬件能够执行的芯片语言。而C编写的代码,则需要通过编译->链接生成exe文件才能变成计算机能运行的芯片语言。因此,Python语言与C语言在转换成芯片...
  • python特点简述

    万次阅读 2018-03-05 02:27:18
    在很大程度上,python更注重可读性、一致性和软件质量,python的设计致力于可读性,带来了比其他语言更优秀的可重用性和可维护性,python秉承了一种独特的简洁和高可读性的语法,以及一种高度一致的编程序模式。...
  • Python代码虽说是跨平台(CrossPlatform)的,但是毕竟他们还是有些不同的,有的函数方法只能在某些操作系统下实现,这时考虑到程序的可移植性,需要在代码中对当前所在的操作系统做一个判断。 如果只想判断操作...
  • 最新Python学习路线+千锋Python课程大纲+Python视频教程+Python学习资料下载地址大合集 目前Python已经成为最受欢迎的...阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白...
  • Python零基础入门教程 2.安装python3.8

    万次阅读 2020-08-19 10:51:36
    安装python3.8 前言 windows安装python3.8 linux安装python3.8 mac安装python3.8 使用docker安装python3.8 总结
  • python移植到arm的单板

    千次阅读 热门讨论 2017-09-22 09:12:48
    本人非常喜欢python,一直梦想可以移植到CSU中。但是python诞生之初并没有想到要应用在嵌入式领域,因此,python的交叉编译比较复杂。python的交叉编译花费了我一些时间进行摸索,这篇文章是在查阅了N多资料,进行了...
  • Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。 二、Python简介及...
  • Python为啥这么火

    万次阅读 2018-02-01 20:15:02
     Python是一种简单的、解释型的、交互式的、可移植的、面向对象的高级语言。 二、Python有哪些优势 1、软件质量  在很大程度上,Python更注重可读性、一致性和软件质量,从而与脚本语言世界中的其他工具区别...
  • 一张图让你学会Python

    千次阅读 2018-07-20 16:35:43
    Python是一个非常适合初学者入门的编程语言。相比较其他不少主流编程...配置开发环境也不是很复杂,mac和linux都内置了python,不少学校也开始使用python来教授程序设计课程。 Python 特点 · 1.易于学习:Python...
  • 原创文章,转载请注明出处。...curses 是大多数类似于 UNIX 的系统(包括Linux)的标准部分,而且它已经移植到 Windows 和其它系统。   安装包 http://www.lfd.uci.edu/~gohlke/pythonlibs/#curses 安装
  • Python的特点(优点和缺点)

    万次阅读 2019-07-02 15:07:11
    我们已经不止一次讲过,Python是一种面向对象、解释型的脚本语言,同时也是一种功能强大而完善的通用型语言。相比其他编程语言(比如Java),Python 代码非常简单,上手非常容易。 举个简单的例子,比如要完成某个...
  • python的优缺点

    万次阅读 2011-10-17 21:15:12
    python的优缺点 ...阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
  • 鉴于Python是FLOSS(Free/Libre and Open Source Software,自由/开放源码软件)...加上Python的可移植性很强,经过不太复杂的改动就可以在各种不同的平台上工作。但凡有些名气的平台,基本都包含在内,比如说Unix ...
  • python3自学之路-笔记1

    千次阅读 2019-03-08 14:16:51
    python3自学之路-笔记1_画蛇添足版helloworld 刚学会如何搭建环境,现在来学习基本的语法及代码细节,做一个随笔 1.默认前缀设置 学过c语言和java都有一个习惯,比如程序开始运行时,总要先贴几段不相关的代码 ...
  • 01-Python安装教程与特色介绍-小白python入门基础

    万次阅读 多人点赞 2020-08-08 16:29:43
    公众号:IT入门 简介 ...Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。 Python语言的创..
1 2 3 4 5 ... 20
收藏数 26,581
精华内容 10,632
关键字:

python程序移植到linux