您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 使用pyinstaller的备用/ tmp位置

5b51 2022/1/14 8:20:36 python 字数 4444 阅读 516 来源 www.jb51.cc/python

我有一个Python脚本,然后我通过pyinstaller2.0运行它来生成它的二进制文件.python pyinstaller -F /path/to/python/script 在运行二进制文件时,它默认使用/ tmp文件夹来保存它的临时文件并运行安装程序.这在普通服务器和VPS上工作正常.但是,在禁用/ tmp的服务器上尝试安装(/ tmp noexe

概述

我有一个Python脚本,然后我通过pyinstaller2.0运行它来生成它的二进制文件.

python pyinstaller -F /path/to/python/script

在运行二进制文件时,它认使用/ tmp文件夹来保存它的临时文件并运行安装程序.这在普通服务器和VPS上工作正常.但是,在禁用/ tmp的服务器上尝试安装(/ tmp noexec)时,安装将失败.

我的问题如下:

>运行二进制文件时,如何启用另一个临时位置? pyinstaller有这样的选择吗?
>如果我编写代码来创建临时位置并将其导出到python脚本中的PATH,那么无论如何都不会尝试使用default / tmp来运行python二进制文件吗?
>我想到的另一种方法是在bash中编写一个shell脚本,创建一个临时位置,导出其PATH,然后调用python二进制文件,运行后,从PATH中删除temp的位置,并删除临时文件夹 – 但是这似乎是一种迂回的方式来完成它.有更好的解决方案吗?

>在pyinstaller文件夹下,查找/ path / to / pyinstaller / sources / common下的launch.c文件
>查找名为int getTempPath(char * buff)的函数
>在它下面,删除对静态const char * envname []的引用(它们是声明,并且在同一个函数中有一个for循环)
>将static const char * dirname []的值更改为所需的值.

因此,函数看起来像这样:

int getTempPath(char *buff)
{
        static const char *dirname[] = {
                "/usr/local/src/temp","/usr/local/src","/usr/src",0
        };
        int i;
        char *p;
        for ( i=0; dirname[i]; i++ ) {
                strcpy(buff,dirname[i]);
                if (testTempPath(buff))
                        return 1;
        }
    return 0;
}

使用以下命令重新编译pyinstaller源:

python ./waf configure –no-lsb build install

要运行它,首先安装python-devel软件包(yum install python-devel -y),否则抛出并且找不到Python.h的错误

现在,当我们通过pyinstaller运行python脚本时,将使用新的temp local.感谢@devnull指出我正确的方向.

总结

以上是编程之家为你收集整理的python – 使用pyinstaller的备用/ tmp位置全部内容,希望文章能够帮你解决python – 使用pyinstaller的备用/ tmp位置所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶