V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
liupengs
V2EX  ›  Python

请教: python2.7 如何兼容更低版本的 Python ?

  •  
  •   liupengs · 2017-08-21 13:44:10 +08:00 · 3072 次点击
    这是一个创建于 2653 天前的主题,其中的信息可能已经有所发展或是发生改变。
    情况是这样的,我现在开发的程序是用 Python2.7 开发的,但是有些服务器只安装了 Python2.6,如何在这些服务器上运行我的程序呢(不能强制这些服务器安装 python2.7 )?
    我的想法是可不可以让开发的程序自带 python2.7,在服务器上安装我开发的程序的时候也安装 python 2.7,但是 python 2.7 只供我的程序使用,且不影响服务器上原来的 2.6。
    请问一下上面这个想法能不能实现呢?如果能够实现又该如何实现呢?(先不考虑将原来的代码改成 2.6 的)
    第 1 条附言  ·  2017-08-21 14:23:38 +08:00
    补充一点,代码最终是要运行在用户的服务器上,他们安装的为 python2.6。我不能强制用户去安装 python2.7,也不能让他们安装多个 python 环境。我的想法是能不能像 go 语言那样,编译的时候自带对应版本的 golang 包。
    由于 python 是解释型语言,我的想法是将 python2.7 安装在我的程序的目录下,仅供我的程序使用,且不影响原来的 python2.6 的环境。
    15 条回复    2017-08-22 09:37:21 +08:00
    notreami
        1
    notreami  
       2017-08-21 14:01:02 +08:00
    这时候突然觉得 Java 好牛掰,1.3 的代码,稍微调整下 java8 也能运行。
    ppwangs
        2
    ppwangs  
       2017-08-21 14:03:24 +08:00
    封装到 docker 里。
    SlipStupig
        3
    SlipStupig  
       2017-08-21 14:04:15 +08:00
    upgrade to python2.7
    然后在老的程序最上面写一行
    # !/usr/bin/python2.x env
    Famio
        4
    Famio  
       2017-08-21 14:05:00 +08:00
    惭愧惭愧,整天在 V2 混,不经意间以为 python 只有 2.7 和 3 ……
    liupengs
        5
    liupengs  
    OP
       2017-08-21 14:07:19 +08:00
    @ppwangs 让用户装 docker,他们肯定不愿意!
    liupengs
        6
    liupengs  
    OP
       2017-08-21 14:08:42 +08:00
    @SlipStupig 代码是给用户用,用户以为他们是上帝,他们肯定不愿意改老代码。
    Kilerd
        7
    Kilerd  
       2017-08-21 14:14:02 +08:00 via iPhone
    pyenv
    aksoft
        8
    aksoft  
       2017-08-21 14:17:33 +08:00
    用户是上帝,你是盘古,懂不?
    Tink
        9
    Tink  
       2017-08-21 14:32:09 +08:00 via iPhone
    virtualenv
    chinvo
        10
    chinvo  
       2017-08-21 14:34:41 +08:00
    virtualenv
    wangxkww
        11
    wangxkww  
       2017-08-21 14:41:51 +08:00
    > 让开发的程序自带 python2.7,在服务器上安装我开发的程序的时候也安装 python 2.7,但是 python 2.7 只供我的程序使用,且不影响服务器上原来的 2.6。

    这个可以实现啊。

    如果你通过源码安装 python2.7,你在./configure 的时候指定下安装路径,只有你的程序用这个路径下的 python 就行了

    如果你通过 rpm 安装 python2.7,你可以

    ```shell
    cd my-dir;
    rpm2cpio python27.rpm | cpio -idv
    ```
    然后只让你的程序用解包出来的这个 python 执行就行了
    chroming
        12
    chroming  
       2017-08-21 14:45:22 +08:00
    把用到 2.7 特性的地方改写成低版本兼容的
    或者打包成可执行程序
    tempdban
        13
    tempdban  
       2017-08-21 14:50:57 +08:00
    virtualenv 不就是你的需求么
    Zuckonit
        15
    Zuckonit  
       2017-08-22 09:37:21 +08:00
    virtualenv, pipenv, pyenv
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1449 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:24 · PVG 01:24 · LAX 09:24 · JFK 12:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.