1 问题描述
在运行chatglm-6B项目时,运行python web_demo.py,出现如下错误:
(chatglm) [root@localhost ChatGLM2-6B]# python web_demo.py
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:06<00:00, 1.08it/s]
/opt/ChatGLM2-6B/web_demo.py:89: GradioDeprecationWarning: The `style` method is deprecated. Please set these arguments in the constructor instead.
user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
Running on local URL: http://0.0.0.0:7860
Could not create share link. Missing file: /root/anaconda3/envs/chatglm/lib/python3.9/site-packages/gradio/frpc_linux_amd64_v0.2.
Please check your internet connection. This can happen if your antivirus software blocks the download of this file. You can install manually by following these steps:
1. Download this file: https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
2. Rename the downloaded file to: frpc_linux_amd64_v0.2
3. Move the file to this location: /root/anaconda3/envs/chatglm/lib/python3.9/site-packages/gradio
2 问题分析
因为缺少frpc_linux_amd64_v0.2或没执行权限,导致创建share链接失败
3 问题解决
# 下载文件,如果无法连接,需要使用代理下载
wget https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
mv frpc_linux_amd64 frpc_linux_amd64_v0.2
mv frpc_linux_amd64_v0.2 /root/anaconda3/envs/chatglm/lib/python3.9/site-packages/gradio
# 增加可执行权限
chmod +x /root/anaconda3/envs/chatglm/lib/python3.9/site-packages/gradio/frpc_linux_amd64_v0.2
执行完成后,查看文件列表:
(chatglm) [root@localhost ChatGLM2-6B]# ll /root/anaconda3/envs/chatglm/lib/python3.9/site-packages/gradio
总用量 12016
-rw-r--r-- 1 root root 7871 1月 3 14:56 analytics.py
-rw-r--r-- 1 root root 105800 1月 3 14:56 blocks.py
-rw-r--r-- 1 root root 288125 1月 3 14:56 CHANGELOG.md
-rw-r--r-- 1 root root 21598 1月 3 14:56 chat_interface.py
-rw-r--r-- 1 root root 1604 1月 3 14:56 cli_env_info.py
-rw-r--r-- 1 root root 518 1月 3 14:56 cli.py
drwxr-xr-x 3 root root 4096 1月 3 14:56 components
-rw-r--r-- 1 root root 1249 1月 3 14:56 context.py
-rw-r--r-- 1 root root 1849 1月 3 14:56 data_classes.py
-rw-r--r-- 1 root root 541 1月 3 14:56 deploy_space_action.yaml
-rw-r--r-- 1 root root 5867 1月 3 14:56 deploy_space.py
-rw-r--r-- 1 root root 2561 1月 3 14:56 deprecation.py
-rw-r--r-- 1 root root 21963 1月 3 14:56 events.py
-rw-r--r-- 1 root root 2121 1月 3 14:56 exceptions.py
-rw-r--r-- 1 root root 22914 1月 3 14:56 external.py
-rw-r--r-- 1 root root 4620 1月 3 14:56 external_utils.py
-rw-r--r-- 1 root root 19720 1月 3 14:56 flagging.py
-rwxr-xr-x 1 root root 11374592 1月 3 15:54 frpc_linux_amd64_v0.2
-rw-r--r-- 1 root root 46227 1月 3 14:56 helpers.py
-rw-r--r-- 1 root root 2217 1月 3 14:56 __init__.py
-rw-r--r-- 1 root root 16583 1月 3 14:56 inputs.py
-rw-r--r-- 1 root root 40108 1月 3 14:56 interface.py
-rw-r--r-- 1 root root 14354 1月 3 14:56 interpretation.py
-rw-r--r-- 1 root root 2589 1月 3 14:56 ipython_ext.py
-rw-r--r-- 1 root root 15 1月 3 15:58 launches.json
-rw-r--r-- 1 root root 13014 1月 3 14:56 layouts.py
-rw-r--r-- 1 root root 4970 1月 3 14:56 mix.py
-rw-r--r-- 1 root root 10022 1月 3 14:56 networking.py
-rw-r--r-- 1 root root 7288 1月 3 14:56 oauth.py
-rw-r--r-- 1 root root 10808 1月 3 14:56 outputs.py
-rw-r--r-- 1 root root 83 1月 3 14:56 package.json
-rw-r--r-- 1 root root 10466 1月 3 14:56 pipelines.py
-rw-r--r-- 1 root root 19246 1月 3 14:56 processing_utils.py
drwxr-xr-x 2 root root 4096 1月 3 14:56 __pycache__
-rw-r--r-- 1 root root 21900 1月 3 14:56 queueing.py
-rw-r--r-- 1 root root 6228 1月 3 14:56 ranged_response.py
-rw-r--r-- 1 root root 3163 1月 3 14:56 reload.py
-rw-r--r-- 1 root root 28588 1月 3 14:56 routes.py
-rw-r--r-- 1 root root 8475 1月 3 14:56 route_utils.py
-rw-r--r-- 1 root root 1721 1月 3 14:56 state_holder.py
-rw-r--r-- 1 root root 3665 1月 3 14:56 strings.py
drwxr-xr-x 4 root root 33 1月 3 14:56 templates
-rw-r--r-- 1 root root 16345 1月 3 14:56 templates.py
drwxr-xr-x 5 root root 288 1月 3 14:56 test_data
drwxr-xr-x 4 root root 249 1月 3 14:56 themes
-rw-r--r-- 1 root root 4054 1月 3 14:56 tunneling.py
-rw-r--r-- 1 root root 30926 1月 3 14:56 utils.py
-rw-r--r-- 1 root root 502 1月 3 14:56 wasm_utils.py
再次运行python web_demo.py,成功创建share链接,问题解决。
(chatglm) [root@localhost ChatGLM2-6B]# python web_demo.py
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7/7 [00:06<00:00, 1.10it/s]
/opt/ChatGLM2-6B/web_demo.py:89: GradioDeprecationWarning: The `style` method is deprecated. Please set these arguments in the constructor instead.
user_input = gr.Textbox(show_label=False, placeholder="Input...", lines=10).style(
Running on local URL: http://0.0.0.0:7860
Running on public URL: https://f918ca62c0259d8e73.gradio.live
4 conda环境介绍
Conda是一个开源的包管理器和环境管理系统,用于安装、运行和更新包和其依赖项。它是由Anaconda, Inc.(以前称为Continuum Analytics)创建,用于支持Python程序开发,但它也可以用来管理来自其他语言的包。Conda使得包管理和环境隔离变得简单,对于处理多个项目中的依赖关系和版本控制尤其有用。
Conda是一个强大的工具,对于管理复杂的Python项目和环境至关重要。它简化了包管理和环境设置,使得Python开发更加容易和高效。通过使用Conda,开发者可以确保他们的项目在不同机器和操作系统上都能以相同的方式运行,大大提高了项目的可移植性和可复现性。
4.1 Conda的核心概念
-
包管理:Conda作为包管理器,能够安装、更新和卸载软件包。这些包可能包含Python或其他编程语言的库和应用程序。Conda通过包含所有依赖性的方式来解决包之间的依赖关系问题。
-
环境管理:Conda允许用户创建隔离的环境,以便在不同的项目之间切换,而不会导致依赖项或版本的冲突。每个环境都有自己的一套独立的安装的软件包。
-
跨平台:Conda是跨平台的,可以在Windows、macOS和Linux操作系统上运行。这使得在不同操作系统上保持一致的开发和部署环境成为可能。
-
语言无关性:虽然Conda最初是为Python生态系统设计的,但它实际上是语言无关的,可以管理多种编程语言的软件包。
-
通道(Channels):Conda软件包可以从所谓的“通道”中获得。这些通道是包存储库,可以是公共的或私有的。Anaconda Cloud提供了许多预建的包,而用户也可以创建自己的通道来托管和分享包。
-
依赖和兼容性管理:Conda在安装软件包时会自动处理依赖关系和版本控制,确保所有依赖项都兼容,并且不会发生冲突。
4.2 使用Conda的优势
-
解决依赖性问题:Conda可以自动解决包之间的依赖关系,简化了安装过程。
-
环境隔离:创建独立的环境可以避免包之间的版本冲突,使得项目更稳定。
-
易于使用:Conda的命令行界面简单直观,易于学习和使用。
-
广泛的包支持:Conda支持Python的许多流行库和应用程序。
-
社区支持:作为一个流行的工具,Conda拥有一个活跃的社区,用户可以从中找到支持和资源。
4.3 Conda环境的创建和管理
-
创建新环境:使用
conda create
命令创建一个新环境,可以指定Python版本和所需的包。 -
激活环境:使用
conda activate
命令来激活环境。 -
安装包:在激活的环境中使用
conda install
命令来安装新的包。 -
环境列表:使用
conda env list
来查看所有可用的Conda环境。 -
移除环境:使用
conda env remove
命令来移除不再需要的环境。
4.4 应用场景
Conda作为一个强大的包和环境管理工具,广泛应用于需要精确控制依赖和环境的各种软件开发和科学计算领域,主要包括:
-
数据科学和机器学习项目:由于Conda可以轻松安装和管理各种数据科学和机器学习的库(如NumPy, Pandas, Scikit-learn, TensorFlow, PyTorch等),它成为了这些领域专家的首选工具。
-
多语言项目:对于涉及Python、R、Ruby、Lua、Scala等多种编程语言的项目,Conda能够有效管理不同语言的依赖和环境,使项目维护变得更加简单。
-
环境隔离:在需要为不同项目创建隔离的运行环境时,Conda可以创建独立的环境,每个环境具有不同的库和版本,这有助于防止依赖冲突。
-
跨平台开发:由于Conda支持Windows、macOS和Linux,它允许开发者在不同的操作系统上以一致的方式设置和维护他们的开发环境。
-
科学研究:在科学研究中,需要使用特定版本的软件和库来重现实验结果。Conda可以确保这些环境的一致性和可复制性。
-
软件开发:对于需要确保应用程序在特定版本的库上正常运行的开发场景,Conda可以帮助管理和锁定这些依赖。
-
教育和培训:在教育场景中,Conda可以帮助创建统一的学习环境,确保所有学生都在相同的软件设置下学习。
-
持续集成/持续部署(CI/CD):在自动化构建和部署流程中,Conda可以用于创建和管理构建环境,确保软件在不同环境中的一致性和可靠性。
4.5 常用命令
Conda 是一个开源的包管理器和环境管理器,广泛用于管理Python环境和包。以下是一些常用的 Conda 命令:
-
安装 Conda 包:
conda install [package-name]
: 安装指定的包。
-
创建和管理环境:
conda create --name [env-name]
: 创建一个新的环境。conda activate [env-name]
: 激活指定环境。conda deactivate
: 退出当前环境。conda env list
: 列出所有可用的环境。
-
管理包:
conda list
: 在当前环境中列出所有已安装的包。conda update [package-name]
: 更新指定的包。conda remove [package-name]
: 移除指定的包。
-
搜索包:
conda search [package-name]
: 搜索可用的包版本。
-
环境导出和导入:
conda env export > environment.yml
: 导出当前环境的配置到一个YAML文件。conda env create -f environment.yml
: 使用YAML文件创建一个新环境。
-
更新 Conda:
conda update conda
: 更新 Conda 到最新版本。
-
查看 Conda 信息:
conda info
: 显示关于 Conda 的信息。