在不丢失解释功能的情况下,将python代码打包到可执行文件中



我需要制作一个可执行文件,从系统(在我的例子中是Linux(中获取一些变量
我尝试过nuitka,但在另一台机器上测试时,我发现它使用了我编译它的机器上的变量。
我需要的是程序从运行它的机器中获取所需的数据(例如,我获取用户的主文件夹(。它试图搜索编译文件的机器的用户,这有点破坏了整个点。

编辑:添加澄清代码

username = pexpect.run('whoami')
userpath = '/home/{}'.format(username)
filename = __file__
filename = filename[2:]
pexpect.run('cp {} {}/{}'.format(filename, userpath, filename))

当它以.py的形式运行时,它会得到正确工作所需的一切,例如正确的用户名和文件名。但是,当我通过nuitka运行它并在另一台机器上以.exe的形式运行时,它使用的名称就好像我在我写它的机器上运行它一样。例如,用"/home/user1"代替"/home/user2",用"filename.py"代替"filename.exe"。

如果我理解正确的话,您在绝对路径和相对路径方面遇到了问题。您应该在代码中尝试以下操作:

  1. 使用相对路径:例如:您可以简单地使用/data,而不是/usr/you/rrandom/hereyourprogram/data
  2. 在python中,有几个函数可以查找当前文件夹和当前文件夹中的文件夹。您可以编写一个算法来查找当前文件夹
  3. 或者简单地说,如果你找不到文件夹/文件,你可以总是打印出一个错误,并告诉用户他们应该在哪里运行你的程序

我希望我的答案能有所帮助!

最新更新