将我的python项目打包到exe文件中,该文件不需要在客户端安装任何东西



我开发了一个python应用程序,它使用以下包记录用户在网络上的操作

python==3.7.9
selenium==4.0.0
seleniumbase==2.1.9
Tinkerer==1.7.2
tqdm==4.62.3
validators==0.18.2

我尝试过使用许多不同的方法来转换为exe文件,该文件不需要在客户端安装任何东西我已经尝试过使用以下

  1. pyvan,它不起作用,我向pkg的作者打开了一个问题
  2. pyinstaller,当我运行代码时,它总是告诉我库SeleniumBase未知,解决方案是在客户端安装它这不是一个选项
  3. pipenv,效果不佳
  4. PyOxidizer&py2exe也不适合我

我想将python应用程序转换为exe(我不在乎它是单个文件还是文件夹(,只要它不需要在用户端安装

回购结构

├── requirements.txt
├── main.py
├── logo.ico
├── web_actions_recorder
|   ├── main.py
|   ├── __init__.py
└── README.md

我找到了一个解决方案/解决方法

我的应用程序有这样一行,我试图通过以下python代码段import os; os.system("sbase mkrec recording.py")在客户端调用SeleniumBase,这是不可能的,因为客户的PC 上没有seleniumbase

解决方案如下:

  1. 从env Python文件夹C:Users<USER_NAME>AppDataLocalProgramsPythonPython38中复制并粘贴到项目文件中。

    • 文件夹名为Python38,因为我在电脑上使用多个python版本,这个文件夹名为python 38,因为它是python版本3.8.10
  2. 将代码编辑为以下

import os

# the script was in a folder so I had to do `os.path.dirname(".") first
python_dir_path = os.path.join(os.path.dirname("."), "Python38", "python.exe")
# in that way we will use the python folder with everything installed in
# to help us run the `sbase` command without having to install 
# anything on the user's side 
os.system(f"{python_path} -m sbase mkrec recording.py")
  1. 最后使用PyInstaller v4.7来打包应用程序,在我的情况下pyinstaller --clean --onedir --name <your_app_name> --windowed --hidden-import seleniumbase --icon <path_to_icon> main.py

相关内容

  • 没有找到相关文章

最新更新