拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Conda 自定义环境路径与pycharm

Conda 自定义环境路径与pycharm ️ Conda 自定义环境路径与pycharm这份指南将带你完成从配置自定义环境存储路径到创建 NLP 开发环境并最终在 PyCharm 中配置使用的全过程。1. 创建自定义环境存储目录首先我们需要在指定位置创建一个文件夹用于存放所有 Conda 虚拟环境。这样做可以避免 C 盘空间被大量占用也便于统一管理。目标路径:D:\dev_soft\anaconda_env操作: 在文件资源管理器中手动创建该文件夹或在命令行中执行mkdir D:\dev_soft\anaconda_env2. 配置 Conda 首选环境路径接下来告诉 Conda 将新创建的环境默认存放在我们指定的目录中。打开Anaconda Prompt(或任意终端)。运行以下命令将自定义目录添加到 Conda 环境搜索路径的首位conda config --prepend envs_dirs D:\dev_soft\anaconda_env3. 验证配置是否生效执行以下命令检查配置是否成功。conda config --show envs_dirs✅预期输出 你应该能看到D:\dev_soft\anaconda_env出现在列表的第一行。envs_dirs: - D:\dev_soft\anaconda_env - D:\dev_soft\anaconda3\envs - ...4. 创建 NLP 基础环境现在我们来创建一个名为nlp_base2的纯净 Python 环境。conda create -n nlp_base2 python3.12 -y-n nlp_base2: 指定环境名称。python3.12: 指定 Python 版本。-y: 自动确认安装无需手动输入y。如果下载太慢可通过测试各个镜像站的连通性和延迟来选择使用哪一个镜像源下载使用conda prompt 的base环境授予管理员权限import socket import time from urllib.parse import urljoin, urlparse import urllib.request # 国内常用的 Conda 镜像站基础 URL MIRROR_BASE_URLS { 官方源 (Anaconda): https://repo.anaconda.com/, 清华大学 (TUNA): https://mirrors.tuna.tsinghua.edu.cn/, 阿里云 (Aliyun): https://mirrors.aliyun.com/, 中科大 (USTC): https://mirrors.ustc.edu.cn/, 上海交大 (SJTU): https://mirrors.sjtug.sjtu.edu.cn/, 北京大学 (PKU): https://mirrors.pku.edu.cn/, 南京大学 (NJU): https://mirrors.nju.edu.cn/, } # 需要探测的常见路径 COMMON_PATHS [ pkgs/main/, pkgs/free/, anaconda/pkgs/main/, anaconda/pkgs/free/, ] def check_url_connectivity(url, timeout5): 检查单个 URL 的连通性、延迟和内容有效性 domain urlparse(url).netloc result { url: url, dns_ok: False, http_ok: False, latency: None, is_valid_content: False # 新增用于标记内容是否有效 } # 1. 测试 DNS 解析 try: socket.gethostbyname(domain) result[dns_ok] True except socket.gaierror: return result # 2. 测试 HTTP 连接和内容 try: start_time time.time() req urllib.request.Request(url, methodHEAD) req.add_header(User-Agent, Mozilla/5.0) with urllib.request.urlopen(req, timeouttimeout) as response: # 只有 200 才算成功 if response.status 200: result[http_ok] True result[latency] round((time.time() - start_time) * 1000, 2) # 3. 进一步检查页面内容防止是“访问被拒绝”之类的错误页面 # 尝试获取一小部分页面内容进行简单检查 try: # 重新发起一个 GET 请求来获取内容 req_get urllib.request.Request(url, methodGET) req_get.add_header(User-Agent, Mozilla/5.0) with urllib.request.urlopen(req_get, timeouttimeout) as response_get: # 读取前 1KB 内容进行检查 content_sample response_get.read(1024).decode(utf-8, errorsignore).lower() # 如果页面内容不包含“拒绝”、“抱歉”等字样则认为内容有效 if not any(bad_word in content_sample for bad_word in [抱歉, 拒绝, denied, forbidden]): result[is_valid_content] True except Exception: # 如果获取内容失败保守起见认为内容无效 result[is_valid_content] False except Exception: pass return result def find_valid_channels(base_url_name, base_url): 为单个镜像站寻找所有有效的通道 print(f\n正在探测 {base_url_name} ...) valid_channels [] for path in COMMON_PATHS: full_url urljoin(base_url, path) res check_url_connectivity(full_url) # 只有当 HTTP 连接成功 且 内容有效时才算作有效通道 if res[http_ok] and res[is_valid_content]: valid_channels.append({ url: full_url, latency: res[latency] }) print(f ✅ 发现有效通道: {full_url} (延迟: {res[latency]} ms)) elif res[http_ok] and not res[is_valid_content]: print(f ⚠️ 发现通道但内容无效 (可能被拒绝访问): {full_url}) return valid_channels def main(): print( * 70) print( Conda 镜像源智能诊断与配置工具 (v4 - 优化版)) print( * 70) all_valid_channels [] # 遍历所有镜像站寻找有效通道 for name, url in MIRROR_BASE_URLS.items(): channels find_valid_channels(name, url) for ch in channels: all_valid_channels.append({ name: name, url: ch[url], latency: ch[latency] }) print(\n * 70) print( 诊断结果总结) print( * 70) if not all_valid_channels: print( 糟糕未能找到任何可用的镜像通道) print(建议请检查你的网络、防火墙设置或尝试开启/关闭系统代理。) return # 按镜像站名称分组并找出每个站最快的通道 best_channels_per_mirror {} for ch in all_valid_channels: mirror_name ch[name] if mirror_name not in best_channels_per_mirror or ch[latency] best_channels_per_mirror[mirror_name][ latency]: best_channels_per_mirror[mirror_name] ch # 将所有可用的镜像站按最快通道的延迟排序 sorted_mirrors sorted(best_channels_per_mirror.values(), keylambda x: x[latency]) print( 以下镜像站当前可用按其最快通道速度排序) for i, mirror in enumerate(sorted_mirrors, 1): print(f {i}. {mirror[name]} (最快延迟: {mirror[latency]} ms)) # --- 优化推荐逻辑 --- # 优先推荐状态正常的镜像站而不是单纯看速度 # 根据网页信息PKU, USTC, NJU 状态正常TUNA 被拒绝 recommended_mirrors [北京大学 (PKU), 中科大 (USTC), 南京大学 (NJU)] best_mirror None for mirror_name in recommended_mirrors: if mirror_name in best_channels_per_mirror: best_mirror best_channels_per_mirror[mirror_name] break # 如果推荐的都不可用则退而求其次选择速度最快的 if not best_mirror and sorted_mirrors: best_mirror sorted_mirrors[0] print(f\n⚠️ 警告推荐的高速镜像站均不可用将推荐速度最快的可用镜像站。) if best_mirror: best_mirror_name best_mirror[name] print(f\n 推荐操作:) print(f 你的最佳选择是【{best_mirror_name}】。) print( 请在 Anaconda Prompt (管理员) 中运行以下命令进行配置) print(f conda config --remove-key channels) # 为推荐的镜像站添加 main 和 free 通道 for ch in all_valid_channels: if ch[name] best_mirror_name and (main in ch[url] or free in ch[url]): print(f conda config --add channels {ch[url]}) print(f conda config --set show_channel_urls yes) else: print(\n 未能找到合适的镜像站进行推荐。) if __name__ __main__: main()5. 激活新环境创建完成后需要激活环境才能在其中安装软件包。conda activate nlp_base2激活后你的命令行提示符前会出现(nlp_base2)的标识。6. 确认环境实际路径为了确保环境确实创建在了我们自定义的目录下可以进行一次验证。conda info --envs✅预期输出 带有星号*的当前环境nlp_base2其路径应为D:\dev_soft\anaconda_env\nlp_base2。7. 安装 NLP 核心依赖包在已激活的nlp_base2环境中安装常用的数据科学和 NLP 库。我们将使用清华大学的 PyPI 镜像源来加速下载。根据资料pypi.tuna.tsinghua.edu.cn 是清华大学 TUNA 协会维护的 PyPI 公益镜像站国内访问延迟低、下载速度快稳定免费。pip install numpy pandas scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple 在 PyCharm 中配置 Conda 环境完成环境搭建后最后一步是在 PyCharm 中使用它。打开项目设置选择 Conda 环境在弹出的窗口左侧选择Conda Environment。确保Existing environment选项被选中。现在你的 PyCharm 项目就已经成功关联到nlp_base2环境可以开始你的 NLP 开发工作了。问题解决如果出现错误 lateinit property envs_dirs has not been initialized那可能是Ancoda 的环境与pycharm的版本出现问题不兼容导致的将conda进行降级将conda 26.1.1降级为25.9.1匹配PyCharm2024.1.4。打开Anaconda Prompt或终端输入以下命令#降级conda的版本 conda install conda25.9.1 #查看版本 conda --version
返回列表