如何把python最小化安装在客户机上面

因为想尝试在我们的桌面软件中加入python支持,所以想简化python的库,到时候直接放到客户机上面,并且放到我们的目录下,尽量免去不必要的东西,也不要影响机子,不过当写好的程序放到测试机子上后,老是说找不到no module named site,后来看下了代码,发现是找不到site这个库,这个库也是python初始化的时候需要用到的库,解决方法:

1.尝试把我电脑上的python里面的Lib放到客户机上程序的目录,建立一个python27/lib/,结果还是失败

2.把lib下的东西放到跟exe同一个目录,可以,但是还是谁显示import pbk_resource错误,但已经可以运行python的解释器了,不过因为跟exe在同一个目录太杂,所以放弃这种方法

后来看了Py_Initialize的代码,发现在没有设置PYTHONHOME的时候,python是这样查找lib的:

如下代码

 if (pythonhome == NULL || *pythonhome == ‘\0‘) {
        if (search_for_prefix(argv0_path, LANDMARK))
            pythonhome = prefix;
        else
            pythonhome = NULL;
    }
    else
        strncpy(prefix, pythonhome, MAXPATHLEN);

1.这个是当pythonhome为NULL的时候,python的初始化函数会调用search_for_prefix来设置默认的home

static int

search_for_prefix(char *argv0_path, char *landmark)
{
    /* Search from argv0_path, until landmark is found */
    strcpy(prefix, argv0_path);
    do {
        if (gotlandmark(lan dmark))
            return 1;
        reduce(prefix);
    } while (prefix[0]);

    return 0;
}

2.landmark是一个字符串,里面是lib/os.py,gotlandmark主要是测试下当年目录下的是否有lib/os.py

/* gotlandmark only called by search_for_prefix, which ensures

   ‘prefix‘ is null terminated in bounds.  join() ensures

   ‘landmark‘ can not overflow prefix if too long.

*/

static int
gotlandmark(char *landmark)
{
    int ok;

    Py_ssize_t n;

    n = strlen(prefix);
    join(prefix, landmark);
    ok = ismodule(prefix);
    prefix[n] = ‘\0‘;
    return ok;
}

3.如果没有,则再往上上找一层目录,继续执行2的步骤,直到找到或者prefix[0]为0后才会停止

那么我们只要把python27下的lib考到客户机上的exe目录下就可以了

把测试程序运行一遍以后,正常,接下来就是精简库了, 基本上把test和unittest,email之类的库删掉就可以了

时间: 2024-10-16 21:02:44

如何把python最小化安装在客户机上面的相关文章

CentOS-7最小化安装(minimal)手记

准备折腾下LNMP(Linux+Nginx+MySQL+Python),下载了Virtual Box来装个CentOS虚拟机,而完全安装的图形化镜像文件太太(4G),于是下载Minimal版(600M)来捣腾下. 到网易的镜像站下载ISO文件:http://mirrors.163.com/centos/7/isos/x86_64/ 新建虚拟机完毕后,选择下载的ISO文件开始安装了,手动分区的话要注意分区方案. /boot,引导分区,一般由内核和在启动引导中使用的文件,设置大小500M. / ,

Linux的最小化安装

在安装Linux操作系统时,应遵循最小化安装的原则,即不需要或不确定是否需要的包就不安装,这是一个良好的习惯.最小化安装可以在一定程度上为系统瘦身,但更为重要的一点就是它可以提高系统安全性.本文以CentOS6.6为例,来说明最小化安装Linux操作系统的步骤.在CentOS6.6包选择界面之前的安装过程就不再赘述了,直接进入包选择界面,见以下截图: 在安装完成后,如果发现部分包组没有被选择(当然也可能系统并不是你安装的),可以使用yum groupinstall “Desktop” “X wi

Arch Linux最小化安装X

Xorg Xorg-server 安装xorg-server pacman -S xorg-server 可选:xorg-server-utils pacman -S xorg-server-utils Xorg-server-utils meta-package pulls in the most useful packages for certain configuration tasks, they are pointed out in the relevant sections. Dri

Arch Linux最小化安装LXDE桌面环境

安装最小化的LXDE桌面环境: pacman -S lxde-common 安装LXDE Session: pacman -S lxsession 不安装这个没法登录进桌面环境 安装LXDE面板: pacman -S lxpanel 不安装这个,进入LXDE桌面环境后什么都没有 安装窗口管理器: pacman -S openbox 不安装这个,既不能移动窗口,也不能最大.最小化窗口 安装LXDE环境下的终端程序: pacman -S lxterminal 安装LXDE环境下的文件管理器: pac

CentOS 6.2最小化安装后再安装图形界面

在安装CentOS 6.2时发现它没有提示我要怎么安装,而是"自作主张"地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所以如果没有图形界面也是很麻烦的. 后来通过百度才知道为什么它不让我选了,因为我用的是虚拟机,由于物理机本身配置就不高,所以我就没给虚拟机分配太多内存,而CentOS 6.2会根据你分配的内存大小决定安装方式,具体的界定我也忘记了,好像是512M还是1G,不过没关系,我们可以自己来安装图形界面,下面来说一下怎么安装. 1.yum -y g

CentOS 6,7最小化安装后再安装图形界面

CentOS 6.2最小化安装后再安装图形界面 在安装CentOS 6.2时发现它没有提示我要怎么安装,而是“自作主张”地给我选择了最小化安装,结果装完之后只有终端界面,因为有时候不得不用图形界面,所以如果没有图形界面也是很麻烦的. 后来通过百度才知道为什么它不让我选了,因为我用的是虚拟机,由于物理机本身配置就不高,所以我就没给虚拟机分配太多内存,而CentOS 6.2会根据你分配的内存大小决定安装方式,具体的界定我也忘记了,好像是512M还是1G,不过没关系,我们可以自己来安装图形界面,下面来

virtualbox下最小化安装centos7后上网设置

在虚拟机中以最小化方式安装centos7,后无法上网,可以设置 文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 将 ONBOOT=no 改为 ONBOOT=yes 保存后重启网卡: service network restart 此时就可以上网了. 因为是最小化安装,此时ifconfig命令不能用,可用 命令:ip addr  查看分配网卡情况. 联网后可运行命令: yum install net-tools 来安装ifconfig功能 此时virt

Centos7最小化安装下安装,编译lamp环境

centos7默认的php是5.5,mysql已经变为mariadb,如果想要自定义的配置,需要自己手动来编译配置.以下步骤在公司服务器上已经正常操作过. 1.安装centos7选择基本安装,配置完网络后首先要先关闭firewall: 停止firewall # systemctl stop firewalld.service 禁止firewall开机启动 # systemctl disable firewalld.service 2.安装iptables防火墙 yum方式安装iptables #

centos7最小化安装

centos7最小化安装的时候有些命令是不包含的,所以一开始需要做一些配置才能正常使用. 1. 查看网络命令ifconfig 首先修改网卡配置文件 #vi /etc/sysconfig/network-scripts/ens33 修改配置文件为开机启动,不然后续没法安装 ONBOOT=yes 重启网卡 #service network restart 2. 安装net-tools,因为它包含了ifconfig这个命令 #yum -y install net-tools