使用CPYTHON和DYNAMSOFT条形码读取器创建Python条形码扩展时,您必须面对的主要问题之一是测试与不同版本的Python的代码兼容性。
要测试窗户,linux或macOS中的Python条形码扩展,您将需要在计算机上安装每个版本的Python。但是,这很耗时。
在这里,我们为您提供了一个简单的黑客攻击!您可以使用Docker容器,而不是安装所有这些Python版本。
使用Python条形码SDK创建Docker Image
首先,下载Docker桌面并安装它。
如果您的系统没有Python 3.8,请转到Docker Hub并拔出包含Python 3.8的Docker Image。现在调用命令提示符的命令:
docker run -it --rm python:3.8 bash
如果不存在Docker映像,则上面给出的命令本身将触发下载。
接下来,您可以创建一个Dockerfile来创建一个新的Docker映像,其中包括Dynamsoft Barcode Reader SDK:
FROM python:3.8
RUN pip install dbr
生成docker映像:
docker build --rm -t yushulx/dynamsoft-barcode-reader:python-3.8
进一步运行容器测试。它将帮助您验证您是否基于Python的DynamSoft条形码读取器工作正常。
docker run -it --rm yushulx/dynamsoft-barcode-reader:python-3.8
接下来,您需要在验证容器后将Docker图像发布到Docker Hub:
docker login
docker push yushulx/dynamsoft-barcode-reader:python-3.8
您可以访问以下给定链接以测试图像:
https://hub.docker.com/repository/docker/yushulx/dynamsoft-barcode-reader.
将本地文件夹安装到Docker容器
要将本地窗口文件夹安装到Linux Docker容器中,请使用Python 3.8执行Python脚本。
之后,从Docker桌面的设置中选择共享驱动器:
将Windows文件夹安装到Linux容器中,执行以下命令:
docker run -it --rm -v d:/code/docker:/dynamsoft yushulx/dynamsoft-barcode-reader:python-3.8 bash
如何使用Visual Studio代码遥控范围调试Python代码
编写和调试Python代码的首选选项是使用Visual Studio代码。
首先安装VSCODE的Docker扩展名,如下所示:
单击F1键以执行运行容器选项的附件。
在项目文件夹上双击。
它将允许您在VSCODE中编辑Python文件。接下来,安装用于容器的Python调试器进行调试:
要远程调试代码,请单击F5。
import os
from dbr import DynamsoftBarcodeReader
dbr = DynamsoftBarcodeReader()
def InitLicense(license):
dbr.InitLicense(license)
def DecodeFile(fileName):
try:
results = dbr.DecodeFile(fileName)
textResults = results["TextResults"]
resultsLength = len(textResults)
print("count: " + str(resultsLength))
if resultsLength != 0:
for textResult in textResults:
print(textResult["BarcodeFormatString"])
print(textResult["BarcodeText"])
localizationResult = textResult["LocalizationResult"]
x1 = localizationResult["X1"]
y1 = localizationResult["Y1"]
x2 = localizationResult["X2"]
y2 = localizationResult["Y2"]
x3 = localizationResult["X3"]
y3 = localizationResult["Y3"]
x4 = localizationResult["X4"]
y4 = localizationResult["Y4"]
localizationPoints = [(x1,y1),(x2,y2),(x3,y3),(x4,y4)]
print(localizationPoints)
else :
print("No barcode detected")
except Exception as err:
print(err)
if __name__ == "__main__":
# Get the license from https://www.dynamsoft.com/customer/license/trialLicense/
licenseKey = "DLS2eyJoYW5kc2hha2VDb2RlIjoiMjAwMDAxLTE2NDk4Mjk3OTI2MzUiLCJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInNlc3Npb25QYXNzd29yZCI6IndTcGR6Vm05WDJrcEQ5YUoifQ=="
fileName = r"test.jpg"
InitLicense(licenseKey)
dir_path = os.path.dirname(os.path.realpath(__file__))
DecodeFile(os.path.join(dir_path, fileName))