docker 里调试不支持中文路径解决

本文详细介绍了在Docker环境中解决中文路径导致的错误的方法。通过修改系统编码为UTF-8,安装中文包,并设置环境变量,成功实现了对中文路径的支持。
部署运行你感兴趣的模型镜像

docker 里调试不支持中文路径解决
docker里系统默认编码为 ANSI_X3.4-1968 , 一遇到中文就会报错, 需要将其改为UTF-8

root@a0d222e3c533:# python cv2_imread.py 
		Traceback (most recent call last):
		  File "cv2_imread.py", line 11, in <module>
			image_pil = Image.open(filename).convert("RGB")
		  File "/usr/local/lib/python3.6/dist-packages/PIL/Image.py", line 2843, in open
			fp = builtins.open(filename, "rb")
		UnicodeEncodeError: 'ascii' codec can't encode characters in position 36-37: ordinal not in range(128)

解决:

//查看当前系统编码
root@a0d222e3c533:# locale
		LANG=
		LANGUAGE=
		LC_CTYPE="POSIX"
		LC_NUMERIC="POSIX"
		LC_TIME="POSIX"
		LC_COLLATE="POSIX"
		LC_MONETARY="POSIX"
		LC_MESSAGES="POSIX"
		LC_PAPER="POSIX"
		LC_NAME="POSIX"
		LC_ADDRESS="POSIX"
		LC_TELEPHONE="POSIX"
		LC_MEASUREMENT="POSIX"
		LC_IDENTIFICATION="POSIX"
		LC_ALL=

设置中文 export LC_ALL=zh_CN.GBK
warning信息不用管

root@a0d222e3c533:# export LC_ALL=zh_CN.GBK
		bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.GBK): No such file or directory
root@a0d222e3c533:# locale
		locale: Cannot set LC_CTYPE to default locale: No such file or directory
		locale: Cannot set LC_MESSAGES to default locale: No such file or directory
		locale: Cannot set LC_ALL to default locale: No such file or directory
		LANG=
		LANGUAGE=
		LC_CTYPE="zh_CN.GBK"
		LC_NUMERIC="zh_CN.GBK"
		LC_TIME="zh_CN.GBK"
		LC_COLLATE="zh_CN.GBK"
		LC_MONETARY="zh_CN.GBK"
		LC_MESSAGES="zh_CN.GBK"
		LC_PAPER="zh_CN.GBK"
		LC_NAME="zh_CN.GBK"
		LC_ADDRESS="zh_CN.GBK"
		LC_TELEPHONE="zh_CN.GBK"
		LC_MEASUREMENT="zh_CN.GBK"
		LC_IDENTIFICATION="zh_CN.GBK"
		LC_ALL=zh_CN.GBK

//查看当前系统默认编码
root@a0d222e3c533:# locale charmap
		locale: Cannot set LC_CTYPE to default locale: No such file or directory
		locale: Cannot set LC_MESSAGES to default locale: No such file or directory
		locale: Cannot set LC_ALL to default locale: No such file or directory
		ANSI_X3.4-1968  //当前编码格式为ANSI_X3.4-1968 , 一旦遇到中文便会报错

//安装中文包:apt-get install language-pack-zh-hans
root@a0d222e3c533:# apt-get install language-pack-zh-hans
root@a0d222e3c533:# locale -a
		locale: Cannot set LC_CTYPE to default locale: No such file or directory
		locale: Cannot set LC_MESSAGES to default locale: No such file or directory
		locale: Cannot set LC_COLLATE to default locale: No such file or directory
		C
		C.UTF-8
		POSIX
		zh_CN.utf8
		zh_SG.utf8


//设置
export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8
export LANGUAGE=zh_CN.utf8

root@a0d222e3c533:# export LC_ALL=zh_CN.utf8
		bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.utf8): No such file or directory
root@a0d222e3c533:# export LANG=zh_CN.utf8
root@a0d222e3c533:# export LANGUAGE=zh_CN.utf8
root@a0d222e3c533:# locale
		LANG=zh_CN.utf8
		LANGUAGE=zh_CN.utf8
		LC_CTYPE="zh_CN.utf8"
		LC_NUMERIC="zh_CN.utf8"
		LC_TIME="zh_CN.utf8"
		LC_COLLATE="zh_CN.utf8"
		LC_MONETARY="zh_CN.utf8"
		LC_MESSAGES="zh_CN.utf8"
		LC_PAPER="zh_CN.utf8"
		LC_NAME="zh_CN.utf8"
		LC_ADDRESS="zh_CN.utf8"
		LC_TELEPHONE="zh_CN.utf8"
		LC_MEASUREMENT="zh_CN.utf8"
		LC_IDENTIFICATION="zh_CN.utf8"
		LC_ALL=zh_CN.utf8

//再次查看,已经换成了utf-8编码
root@a0d222e3c533:# locale charmap
			UTF-8

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

### Docker容器调试概述 对于Docker容器调试,存在多种方法和技术来实现这一目标。早期Docker并未提供内置的调试支持,但随着社区的努力以及官方的功能增强,现在可以通过不同的途径来进行有效的调试工作[^2]。 #### 使用PyCharm进行本地Docker容器Debug 针对希望利用IDE的强大特性简化开发流程的情况,PyCharm提供了集成式的解决方案用于在本地环境中设置并调试基于Docker的应用程序。具体操作涉及拉取含有所需环境配置的Docker镜像,并按照特定指南完成PyCharm内部的相关设定以便于后续的断点调试等活动[^1]。 ```python # 示例:定义一个简单的Python脚本作为被调试对象 def main(): print("Starting debug session...") breakpoint() # 设置断点位置等待外部连接 print("After break point") if __name__ == "__main__": main() ``` 为了使上述代码能够在Docker环境下正常响应来自PyCharm IDE发出的调试请求,需确保: - 已经安装了适当版本的PyCharm Professional Edition。 - 正确设置了项目的解释器指向对应的Docker Compose服务或单独指定的Docker镜像中的Python路径。 - 配置好了相应的Run/Debug Configuration选项卡内的参数,比如主机地址、端口映射等信息。 #### 利用VSCode及其扩展包实现远程调试 除了PyCharm之外,Visual Studio Code (简称 VSCode)同样是一个非常受欢迎的选择之一。借助其丰富的插件生态系统,特别是Remote - Containers插件的支持下,开发者能够轻松地将编辑窗口直接挂载到正在运行的目标容器内执行命令行指令或是启动交互式会话的同时开启实时编码体验[^4]。 ```json // .devcontainer/docker-compose.yml 文件片段展示如何暴露必要的接口供外界访问 services: app: image: python:latest ports: - "8080:80" - "5678:5678" # 调试监听端口 volumes: - ..:/workspace:cached environment: PYTHONUNBUFFERED: 1 command: > sh -c "pip install ptvsd && python3 /workspace/app.py" ``` 此配置允许用户通过`ptvsd`库建立远控通道进而触发暂停机制直至满足预设条件为止。 #### Spring Boot应用下的Docker Debug实践 当涉及到Java领域尤其是Spring框架构建的服务时,则可参照专门面向此类场景设计的工作流说明文档。这通常意味着要调整应用程序本身的启动参数以启用JPDA传输协议从而让JVM实例愿意接受来自网络任意合法来源发起的连接尝试;与此同时还要注意防火墙策略是否会对整个过程造成阻碍影响最终效果呈现出来[^3]。 ```bash # 命令行示例:向docker run添加额外标志位激活远程调试模式 $ docker run \ -e JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" \ my-spring-boot-app-image-name ``` 以上就是几种常见的围绕着不同编程语言生态所展开讨论过的有关怎样更好地运用现有资源去解决实际遇到的问题——即如何高效便捷地对处于Docker化平台之上的各类软件制品实施深入探究性质的任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值