本地机器 A , 写一个数据库更新的脚本依赖 mysql 模块。
迁移到生产线机器 B , 没有 pip ,没有 setuptools , 没有 root 权限,没有 mysql 模块..
virualenv 试过了,说找不到 CGLIB_2.14 (required by ./python2.7)
蛋疼了..
1
msg7086 2015-12-02 14:55:39 +08:00
没有 root 不可怕,依赖不够才是大问题。
|
2
est 2015-12-02 15:23:19 +08:00
没 root 不可怕。可怕的是只有 python 2.6 。 virtualenv 也帮不了忙。
|
3
VYSE 2015-12-02 15:27:00 +08:00
GLIBC_2.14 (required by ./python2.7)明显是在高版本 GLIBC LINUX 下编译的 executable 放到 CENTOS 6 这种带 2.12 的 GLIBC 的系统下跑导致的。
PYTHON 和用 C EXT 的库都得在相同环境下编译拿来用,不然就麻烦些改运行时的 LD_LIBRARY 用 FEDORA 15 的 2.13.90 版本 GLIBC 全套。 不过你还是用 ACTIVEPYTHON 和他家的 PYPM 装库吧,不行再编译 |
4
wlsnx 2015-12-02 15:28:48 +08:00
你试试用 pyenv 编译一个 2.7 的,再在 pypi.python.org 下载 get-pip.py 安装 pip 。这样就可以在没有 root 权限的情况下使用 python2.7 和 pip 了。
参考 https://github.com/yyuu/pyenv 和 https://pip.pypa.io/en/latest/installing/ |
5
iyaozhen 2015-12-02 15:29:38 +08:00
自带 python 环境。生产线的机器系统一般都一样。一个包,到处用
|
6
blank4me 2015-12-02 15:35:19 +08:00
https://pypi.python.org/pypi/bbfreeze
用这个可以自动识别依赖,打包出一个可以直接运行的 python 出来。 但是这个 python 只保证能跑你的程序,而且修改.py 不会生效,需要重新打包。 |
7
P0P 2015-12-02 15:39:31 +08:00
试一下 anaconda 封装的 python( https://www.continuum.io/downloads), 里面带了一些它自己的 c 拓展。
|
8
Zzzzzzzzz 2015-12-02 15:40:29 +08:00
A 机器 pip freeze 导出包名, B 用普通用户编译一个和 A 相同版本的 python, 装好 pip 后再安装这些库, 没 root 不要紧的.
glibc 不一致打包或者 virtualenv 目录迁移都是不行的。 |
9
tinyproxy 2015-12-02 20:37:50 +08:00
求管理员装个 docker
|