引言
就在刚刚,接了一个PDF数据提取的项目,因为格式不统一,需要OCR识别,并且还需要自然语言处理,因为项目比较急,选择python开发,因为PDF数据比较敏感,不能发给我本地处理,所以需要在他们的机器上执行,选择pyinstaller打包其实也是个比较不错的选择,但是效率比较低,打包起来可能存在一些其它问题。
准备阶段
- 下载开发版的python安装包
- 使用virtualenv创建项目

安装需要的依赖
⚠ 这里安装的依赖必须在虚拟环境中安装

注意前面的(venv),这代表着在虚拟环境中,也可以在venv\Scripts下执行pip进行安装
构建启动脚本
- 把安装包中的python解压(你可以选择在沙箱或者虚拟机中安装),这里为什么不选择系统中安装的python是因为更加简洁(如图,把python复制到项目路径中,如:python310)


-
修改激活脚本和配置文件
这里我使用了python进行处理
```python
import osbase_dir = os.path.abspath('.')
activate_path = os.path.join(base_dir, 'venv', 'Scripts', 'activate.bat')
env_cfg_path = os.path.join(base_dir, 'venv', 'pyvenv.cfg')
with open(activate_path, 'r', encoding='gbk') as f:
txt = f.read()
txt = txt.replace(r'xxxxxxxxxx', os.path.join(base_dir, 'venv'))
with open(activate_path, 'w', encoding='gbk') as f2:
f2.write(txt)os.system("")
os.system(activate_path)with open(env_cfg_path, 'r', encoding='gbk') as f:
txt = f.read()
txt = txt.replace(r'xxxxxxxxxx', os.path.join(base_dir, 'python310'))
with open(env_cfg_path, 'w', encoding='gbk') as f2:
f2.write(txt)
with open("run.bat", 'w') as f:
f.write("cd " + base_dir + "\n")
f.write(base_dir[0:2] + " \n")
f.write("call " + activate_path + "\n")
f.write("python main.py\n")os.system("run.bat")
```
注意代码中的xxxxxxxxxx,需要修改成原来文件中的内容
ℹ:这个代码是修改配置文件,最后启动run.bat,run.bat将会启动activate.bat,进入到虚拟环境中,并且执行main.py, main.py 是主程序入口
3. 执行start.py

结语
这个方法适用于没有python环境,或者存在多个环境的机器,原理都是相似的,上面的只适用于windows系统,如果是其它系统,把python换成相应的版本,并且修改activate.bat的代码换成对应系统的,如linux的activate,修改VIRTUAL_ENV字段的值,配置文件路径修改成正确的路径,并且最终启动的os.system("run.bat")改成相应的命令即可。
修改的文件
activate.bat
pyvenv.cfg
建议
如果频繁修改文件路径,start.py 就不能这么写了,因为这只能修改1次。


评论 0
还没有评论,来说点什么吧。