我开发了一个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文件,该文件不需要在客户端安装任何东西我已经尝试过使用以下
pyvan
,它不起作用,我向pkg的作者打开了一个问题pyinstaller
,当我运行代码时,它总是告诉我库SeleniumBase
未知,解决方案是在客户端安装它这不是一个选项pipenv
,效果不佳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
解决方案如下:
-
从env Python文件夹
C:Users<USER_NAME>AppDataLocalProgramsPythonPython38
中复制并粘贴到项目文件中。- 文件夹名为Python38,因为我在电脑上使用多个python版本,这个文件夹名为python 38,因为它是python版本3.8.10
-
将代码编辑为以下
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")
- 最后使用
PyInstaller v4.7
来打包应用程序,在我的情况下pyinstaller --clean --onedir --name <your_app_name> --windowed --hidden-import seleniumbase --icon <path_to_icon> main.py