• 如何把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 == '') {
            if (search_for_prefix(argv0_path, LANDMARK))
                pythonhome = prefix;
            else
                pythonhome = NULL;
        }
        else
            strncpy(prefix, pythonhome, MAXPATHLEN);

    1.这个是当pythonhomeNULL的时候,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.pygotlandmark主要是测试下当年目录下的是否有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] = '';
        return ok;
    }

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

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

     

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

  • 相关阅读:
    python模块添加
    Python 的列表排序
    python中文处理问题
    排序算法堆排序
    搜索二分搜索
    排序算法(随机)快速排序(递归)
    排序算法计数排序
    OO设计原则总结
    异常控制以及进程调度
    ubuntu12.04 alternate win7 双系统安装
  • 原文地址:https://www.cnblogs.com/linyilong3/p/4165358.html
Copyright © 2020-2023  润新知