Conda离线部署django
要在没有网络连接的环境中使用conda部署Django,你需要预先在有网络连接的机器上创建一个包含所有必要包的环境,并导出该环境的配置文件。然后,你可以将这个配置文件和必要的包传输到目标机器上进行安装。
下面是详细的步骤:
1. 在线环境准备
创建一个包含Django的conda环境
首先,在有网络连接的机器上创建一个新的conda环境,并安装Django及其依赖。
conda create -n my_django_env python=3.10.6
conda activate my_django_env
conda install django
这里假设你想要使用Python 3.9版本来安装Django。

(base) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup> conda create --name nudd-env python=3.10.6
Collecting package metadata (current_repodata.json): done
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: done==> WARNING: A newer version of conda exists. <==current version: 4.10.3latest version: 24.7.1Please update conda by running$ conda update -n base -c defaults conda## Package Plan ##environment location: E:\Anaconda\envs\nudd-envadded / updated specs:- python=3.10.6The following packages will be downloaded:package | build---------------------------|-----------------bzip2-1.0.8 | h2bbff1b_6 90 KB defaultsca-certificates-2024.7.2 | haa95532_0 128 KB defaultslibffi-3.4.4 | hd77b12b_1 122 KB defaultsopenssl-1.1.1w | h2bbff1b_0 5.5 MB defaultspip-24.2 | py310haa95532_0 2.5 MB defaultspython-3.10.6 | hbb2ffb3_1 13.8 MB defaultssetuptools-72.1.0 | py310haa95532_0 2.5 MB defaultssqlite-3.45.3 | h2bbff1b_0 973 KB defaultstk-8.6.14 | h0416ee5_0 3.5 MB defaultstzdata-2024a | h04d1e81_0 116 KB defaultsvc-14.40 | h2eaa2aa_0 10 KB defaultsvs2015_runtime-14.40.33807 | h98bb1dd_0 1.3 MB defaultswheel-0.43.0 | py310haa95532_0 136 KB defaultsxz-5.4.6 | h8cc25b3_1 609 KB defaultszlib-1.2.13 | h8cc25b3_1 131 KB defaults------------------------------------------------------------Total: 31.3 MBThe following NEW packages will be INSTALLED:bzip2 pkgs/main/win-64::bzip2-1.0.8-h2bbff1b_6ca-certificates pkgs/main/win-64::ca-certificates-2024.7.2-haa95532_0libffi pkgs/main/win-64::libffi-3.4.4-hd77b12b_1openssl pkgs/main/win-64::openssl-1.1.1w-h2bbff1b_0pip pkgs/main/win-64::pip-24.2-py310haa95532_0python pkgs/main/win-64::python-3.10.6-hbb2ffb3_1setuptools pkgs/main/win-64::setuptools-72.1.0-py310haa95532_0sqlite pkgs/main/win-64::sqlite-3.45.3-h2bbff1b_0tk pkgs/main/win-64::tk-8.6.14-h0416ee5_0tzdata pkgs/main/noarch::tzdata-2024a-h04d1e81_0vc pkgs/main/win-64::vc-14.40-h2eaa2aa_0vs2015_runtime pkgs/main/win-64::vs2015_runtime-14.40.33807-h98bb1dd_0wheel pkgs/main/win-64::wheel-0.43.0-py310haa95532_0xz pkgs/main/win-64::xz-5.4.6-h8cc25b3_1zlib pkgs/main/win-64::zlib-1.2.13-h8cc25b3_1Proceed ([y]/n)? yDownloading and Extracting Packages
vs2015_runtime-14.40 | 1.3 MB | ################################################################################################################# | 100%
xz-5.4.6 | 609 KB | ################################################################################################################# | 100%
zlib-1.2.13 | 131 KB | ################################################################################################################# | 100%
python-3.10.6 | 13.8 MB | ################################################################################################################# | 100%
wheel-0.43.0 | 136 KB | ################################################################################################################# | 100%
sqlite-3.45.3 | 973 KB | ################################################################################################################# | 100%
tzdata-2024a | 116 KB | ################################################################################################################# | 100%
bzip2-1.0.8 | 90 KB | ################################################################################################################# | 100%
vc-14.40 | 10 KB | ################################################################################################################# | 100%
pip-24.2 | 2.5 MB | ################################################################################################################# | 100%
openssl-1.1.1w | 5.5 MB | ################################################################################################################# | 100%
setuptools-72.1.0 | 2.5 MB | ################################################################################################################# | 100%
tk-8.6.14 | 3.5 MB | ################################################################################################################# | 100%
ca-certificates-2024 | 128 KB | ################################################################################################################# | 100%
libffi-3.4.4 | 122 KB | ################################################################################################################# | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate nudd-env
#
# To deactivate an active environment, use
#
# $ conda deactivate(base) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup>
依赖路径
environment location: E:\Anaconda\envs\nudd-env
conda activate nudd-env
conda deactivate
检查原环境

(base) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup> conda activate nudd-env
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup>
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup> pip list
Package Version
---------- -------
pip 24.2
setuptools 72.1.0
wheel 0.43.0
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup> python
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup>
我需要安装的包如下,这些都是自己整理的.对比上面的结果,会发现还缺很多包,所以需要一个个安装了:
Name: Django
Version: 5.0.6
Requires: asgiref, sqlparse, tzdata
Required-by: #N/AName: asgiref
Version: 3.8.1
Requires: typing-extensions
Required-by: #N/AName: sqlparse
Version: 0.5.0
Requires:
Required-by: #N/AName: tzdata
Version: 2023.3
Requires:
Required-by: #N/AName: typing_extensions
Version: 4.7.1
Requires:
Required-by: #N/AName: PyMySQL
Version: 1.1.1
Requires:
Required-by: #N/AName: pandas
Version: 2.1.0
Requires: numpy, python-dateutil, pytz, tzdata
Required-by: #N/AName: numpy
Version: 1.23.5
Requires:
Required-by: #N/AName: python-dateutil
Version: 2.8.2
Requires: six
Required-by: #N/AName: six
Version: 1.16.0
Requires:
Required-by: #N/AName: pytz
Version: 2023.3
Requires:
Required-by: #N/AName: tzdata
Version: 2023.3
Requires:
Required-by: #N/AName: openpyxl
Version: 3.1.4
Requires: et-xmlfile
Required-by: #N/AName: et-xmlfile
Version: 1.1.0
Requires:
Required-by: #N/AName: mysqlclient
Version: 2.2.4
Requires:
Required-by: #N/AName: psycopg2-binary
Version: 2.9.9
Requires:
Required-by: #N/AName: requests
Version: 2.31.0
Requires: certifi, charset-normalizer, idna, urllib3
Required-by: #N/AName: certifi
Version: 2023.7.22
Requires:
Required-by: #N/AName: charset-normalizer
Version: 3.2.0
Requires:
Required-by: #N/AName: idna
Version: 3.4
Requires:
Required-by: #N/AName: urllib3
Version: 1.26.16
Requires:
Required-by: #N/AName: django-apscheduler
Version: 0.6.2
Requires: apscheduler, django
Required-by: #N/AName: APScheduler
Version: 3.10.4
Requires: pytz, six, tzlocal
Required-by: #N/AName: tzlocal
Version: 5.2
Requires: tzdata
Required-by: #N/A

安装上面的环境
pip install Django
pip install PyMySQL
pip install pandas
pip install openpyxl
pip install mysqlclient
pip install psycopg2-binary
pip install requests
pip install django-apscheduler








验证一下包是否全
python manage.py runserver

项目启动没有任何报错,环境OK!
导出环境的详细信息
在创建好环境后,导出该环境的详细信息,包括所有的依赖包。
conda env export > environment.yml
这会生成一个environment.yml文件,其中包含了所有已安装包的信息。

name: nudd-env
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- defaults
dependencies:- bzip2=1.0.8=h2bbff1b_6- ca-certificates=2024.7.2=haa95532_0- libffi=3.4.4=hd77b12b_1- openssl=1.1.1w=h2bbff1b_0- pip=24.2=py310haa95532_0- python=3.10.6=hbb2ffb3_1- setuptools=72.1.0=py310haa95532_0- sqlite=3.45.3=h2bbff1b_0- tk=8.6.14=h0416ee5_0- vc=14.40=h2eaa2aa_0- vs2015_runtime=14.40.33807=h98bb1dd_0- wheel=0.43.0=py310haa95532_0- xz=5.4.6=h8cc25b3_1- zlib=1.2.13=h8cc25b3_1- pip:- amqp==5.2.0- apscheduler==3.10.4- asgiref==3.8.1- async-timeout==4.0.3- billiard==4.2.0- celery==5.4.0- certifi==2024.8.30- charset-normalizer==3.3.2- click==8.1.7- click-didyoumean==0.3.1- click-plugins==1.1.1- click-repl==0.3.0- colorama==0.4.6- django==5.1- django-apscheduler==0.6.2- et-xmlfile==1.1.0- idna==3.8- kombu==5.4.0- mysqlclient==2.2.4- numpy==2.1.0- openpyxl==3.1.5- pandas==2.2.2- pika==1.3.2- prompt-toolkit==3.0.47- psycopg2-binary==2.9.9- pymysql==1.1.1- python-dateutil==2.9.0.post0- pytz==2024.1- redis==5.0.8- requests==2.32.3- six==1.16.0- sqlparse==0.5.1- typing-extensions==4.12.2- tzdata==2024.1- tzlocal==5.2- urllib3==2.2.2- vine==5.1.0- wcwidth==0.2.13
prefix: E:\Anaconda\envs\nudd-env
2. 下载离线包
获取所需的conda包
你需要下载所有在environment.yml中列出的包。可以使用conda pack或者手动下载这些包。
- 使用
conda pack(需要conda-build包):
conda install conda-pack
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup> conda install conda-pack
Collecting package metadata (current_repodata.json): done
Solving environment: done==> WARNING: A newer version of conda exists. <==
current version: 4.10.3
latest version: 24.7.1Please update conda by running$ conda update -n base -c defaults conda## Package Plan ##environment location: E:\Anaconda\envs\nudd-envadded / updated specs:- conda-packThe following packages will be downloaded:package | build---------------------------|-----------------conda-pack-0.7.1 | py310haa95532_0 73 KB defaults------------------------------------------------------------Total: 73 KBThe following NEW packages will be INSTALLED:conda-pack pkgs/main/win-64::conda-pack-0.7.1-py310haa95532_0Proceed ([y]/n)? yDownloading and Extracting Packages
conda-pack-0.7.1 | 73 KB | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup>
3. 打包离线包
conda pack -n nudd-env

(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup> conda pack -n nudd-env
Collecting packages...
Packing environment at 'E:\\Anaconda\\envs\\nudd-env' to 'nudd-env.tar.gz'
[########################################] | 100% Completed | 1min 43.3s
(nudd-env) PS E:\RomulusHe\Projects\NUDD\DjangoProDemo-followup>

4. 安装环境
在离线机器上,使用以下命令安装环境和所有包。
conda create --name my_django_env --offline --use-local --file environment.yml
如果使用了conda pack方法下载的包,你还需要指定包的位置:
conda create --name my_django_env --offline --use-local --file environment.yml --channels ./packages
简化方法(非windows系统)
将 Anaconda 安装包拷贝到机器中进行环境的安装,进行环境的配置
在 env 下创建和压缩包同名的文件夹 nudd-env
将压缩包 nudd-env.tar.gz 解压到nudd-env下面
tar -xzf nudd-env.tar.gz -C nudd-env
激活该环境,将该环境添加到 conda 的虚拟环境列表中,会自动切换到虚拟环境中
source nudd-env/bin/activate
总结:
将压缩文件复制到Anaconda的虚拟环境路径下,解压缩后重新激活环境即可
5. 验证安装
激活新创建的环境,并验证Django是否正确安装。
conda activate my_django_env
python -m django --version
这应该会显示Django的版本号。
以上就是离线部署Django的整个过程。请注意,根据你的具体环境和需求,可能需要做一些调整。如果你使用的是一些特定的channel或包版本,请确保在environment.yml文件中指明。
6.其他
要执行这些任务,你可以按照以下步骤操作:
查看conda环境列表
你可以使用 conda info --envs 或者简化的 conda env list 命令来查看所有可用的conda环境:
conda info --envs
# 或者
conda env list
这将会列出所有已知的conda环境,包括它们的状态(激活或未激活)以及它们所在的路径。
退出conda环境
如果你当前处于某个conda环境中,可以通过以下命令退出当前环境回到base环境:
conda deactivate
如果默认的deactivate命令不起作用,你可以通过指定环境名来退出:
conda deactivate my_current_env
这里 my_current_env 是你当前激活的环境名称。
重命名conda环境
重命名conda环境需要先创建一个新的环境并将旧环境的内容迁移到新环境中,然后删除旧环境。具体步骤如下:
-
创建一个新的环境并安装所需的包:你可以创建一个新的环境,并将旧环境中所有的包安装到新的环境中。
conda create --name new_env_name --clone old_env_name这里
new_env_name是新环境的名字,而old_env_name是旧环境的名字。 -
验证新环境:确保新环境已经正确创建,并且所有需要的包都已安装。
-
激活新环境:
conda activate new_env_name -
删除旧环境:如果确认无误,可以删除旧环境。
conda remove --name old_env_name --all或者使用
conda env remove命令:conda env remove --name old_env_name
请注意,上述方法并不是真正的“重命名”,而是通过复制和删除的方式来达到重命名的效果。这是因为conda本身没有提供一个直接重命名环境的命令。如果你只需要更改环境的名字,并且不想重复安装所有的包,这种方法是可行的。
手动安装environment.yml的依赖包
相关文章:
Conda离线部署django
要在没有网络连接的环境中使用conda部署Django,你需要预先在有网络连接的机器上创建一个包含所有必要包的环境,并导出该环境的配置文件。然后,你可以将这个配置文件和必要的包传输到目标机器上进行安装。 下面是详细的步骤: 1. …...
1. Fabric.js安装使用
安装 # 安装 fabricjs npm i fabric --save在需要使用的页面引入 import * as fabric from fabric...
Excel中.xls和.xlsx文件格式的区别,及C++操作Excel文件
文件结构和兼容性: XLS是Excel 97-2003版本的文件格式,而XLSX是Excel 2007及以上版本的文件格式。XLS格式是向下兼容的,意味着较新的Excel版本可以打开XLS文件,但较旧的版本无法打开XLSX文件。相反,XLSX格式是向上…...
php实用命令
php相关命令 命令错误级别 命令 命令命令介绍具体用法php -v查看php版本php -vphp -l检查php文件是否有语法错误php -lphp -m查看当前php安装的扩展php -mphp -i | grep extension_dir查看扩展安装的目录php -i | grep extension_dir 错误级别 命令命令介绍具体用法error_re…...
TypeError:未绑定方法
TypeError: unbound method 错误通常发生在类方法被调用时,但没有正确绑定到实例。这通常意味着你试图在类本身上调用一个实例方法,或者没有使用正确的方式创建类实例。 1、问题背景 某位开发者在尝试创建一个类似于经典的 Pratt 递归下降解析器时遇到了…...
Java虚拟机(JVM)的架构和工作原理,字节码执行流程
JVM的概念 JVM是Java Virtual Machine的缩写, 即Java虚拟机,也被称为Java程序运行的核心环境 。它是一种用于计算设备的规范,通过在实际的计算机上仿真模拟各种计算机功能来实现。JVM由一套字节码指令集、一组寄存器、一个栈、一个…...
416.分割等和子集
416.分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和…...
python初始化一个三维数组
文章目录 1.什么是三维数组2.那我应该如何初始化一个自定义长度的三维数组呢? 1.什么是三维数组 从最外层开始理解,可以理解为一维数组,里面套了一个二维数组(12等于三维数组) arr [ [[], []], [[], [], []], [[],[]]…...
EI会议推荐-第二届大数据与数据挖掘国际会议(BDDM 2024)
第二届大数据与数据挖掘国际会议(BDDM 2024) 1、基本信息 大会官网:http://www.icbddm.org/ 官方邮箱:icbddm163.com 主办方:武汉纺织大学 会议时间:2024年12月13日-12月15日 会议地点:湖…...
RK3566/RK3568 Android 11 动态显示/隐藏下拉框
概述 在系统服务中增加显示/隐藏状态栏方法,在上层app动态调用显示/隐藏下拉框方法,设备关机和重启后也能继续生效。 创建全局变量 1.定义全局变量 在frameworks/base/core/java/android/provider/Settings.java中添加 /*** Disable drop-down box* @hide*/public static…...
Android图片缓存工具类LruCache原理和使用介绍
LruCache & DiskLruCache原理。 常用的三级缓存主要有LruCache、DiskLruCache、网络,其中LruCache对应内存缓存、 DiskLruCache对应持久化缓存。Lru表示最近最少使用,意思是当缓存到达限制时候,优先淘汰近 期内最少使用的缓存,…...
生活杂记1
生命中,总有一些事需要你一生去治愈,我把这些杂记写出来,写完了就不再想了,太内耗了…hahaha~ 因为嘴馋,小时候经常去老姑家,她家有各类零食及平时很少吃的“山珍海味”。去的次数多了,就和她家…...
go常用代码
连接阿波罗: 默认properties类型 package mainimport ("fmt""github.com/apolloconfig/agollo/v4""github.com/apolloconfig/agollo/v4/env/config" )func main() {c : &config.AppConfig{AppID: "2222",Cl…...
各种各样的正则表达式
一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 正…...
WebRTC 基础
WebRTC 基础 目录 什么是 WebRTCWebRTC 的基本概念WebRTC 的基本流程 连接建立流程图 WebRTC 的基本对象 RTCPeerConnectionRTCSessionDescriptionRTCIceCandidate WebRTC API 详解 RTCPeerConnection API媒体流 API 详细的代码示例 基本连接示例完整的 WebRTC 实现示例 总结…...
半天攻略:用ChatGPT快速搞定高质量论文,从选题到完稿一站式指南!
在学术论文的撰写过程中,ChatGPT可以作为一个强大的辅助工具,帮助完成从确定主题到整理参考文献的各个环节。接下来,我们将详细介绍如何利用ChatGPT提升论文写作的效率和质量。 确定论文主题 初步探索:通过ChatGPT探索主题&#…...
探索PDF的奥秘:pdfrw库的神奇之旅
文章目录 探索PDF的奥秘:pdfrw库的神奇之旅背景:为何选择pdfrw?pdfrw是什么?如何安装pdfrw?五个简单的库函数使用方法场景应用:pdfrw在实际工作中的应用常见问题与解决方案总结 探索PDF的奥秘:p…...
修改jupyter notebook 默认浏览器(不动配置文件,改系统默认浏览器)
最开始把联想浏览器切到EDGE就是用的修改系统的默认浏览器。不知怎么的现在搜到的方法都是在说修改配置文件😓。 不想动配置文件,平时对默认浏览器没有特殊要求的,可以用这个方法。 这里是把默认浏览器改成联想浏览器,电脑也是联…...
一个基于共享内存的内存数据库:1 介绍
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
可视化编程 制作在线点名程序,人工和随机生成两种模式
以下是对这段代码的分析: 一、功能概述 这是一个使用 Python 的 Tkinter 库创建的图形用户界面(GUI)应用程序,主要功能是进行在线点名和随机抽奖。可以模拟在一个有六排六列座位布局的场景中进行点名操作和不同规模的随机抽奖。 二、主要函数和变量 窗口设置和变量初始化:…...
SOONet模型数据库课程设计项目:构建视频内容管理分析系统
SOONet模型数据库课程设计项目:构建视频内容管理分析系统 最近和几个计算机专业的同学聊天,发现他们正为数据库课程设计选题发愁。老师要求项目既要体现数据库设计的核心知识,又最好能结合一些前沿技术,做出点新意来。这让我想起…...
AnyLogic-Pypeline:打破仿真与AI壁垒的智能集成方案
AnyLogic-Pypeline:打破仿真与AI壁垒的智能集成方案 【免费下载链接】AnyLogic-Pypeline A custom AnyLogic library for running Python inside an AnyLogic model (Java) 项目地址: https://gitcode.com/gh_mirrors/an/AnyLogic-Pypeline 还在为AnyLogic与…...
重庆思庄技术分享——金仓数据库如何手工删除归档日志
金仓数据库如何手工删除归档日志ORACLE有 rman >delete archivelog until sequence# xx那么金仓数据库有类似的功能没有?答案是肯定的,使用sys_archivecleanup...
专业B站视频下载解决方案:实现4K高清与大会员内容本地化存储
专业B站视频下载解决方案:实现4K高清与大会员内容本地化存储 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader Bilibili-dow…...
终极热键侦探指南:3分钟找出Windows快捷键冲突元凶 [特殊字符]️♂️
终极热键侦探指南:3分钟找出Windows快捷键冲突元凶 🕵️♂️ 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detect…...
Linux基础命令(四)
Linux基础命令(四) 1. 秘钥登录(Linux设备间登录) 1.1 环境准备 克隆2台虚拟设备【server1、server2】 # 新增2台设备的基本信息 server1 ip:10.1.8.21/24 hostname: server1.harvy.iCloud server2 ip: 10.1.8.22/24 h…...
cv_unet图像抠图WebUI快速上手:支持剪贴板粘贴,小白也能轻松抠图
cv_unet图像抠图WebUI快速上手:支持剪贴板粘贴,小白也能轻松抠图 1. 工具简介与核心优势 cv_unet_image-matting是一款基于U-Net架构的智能抠图工具,经过开发者"科哥"的WebUI二次开发后,具备了直观易用的图形界面和强…...
5分钟掌握Sketch MeaXure:让设计标注变得简单高效的终极指南
5分钟掌握Sketch MeaXure:让设计标注变得简单高效的终极指南 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 你是否厌倦了在设计和开发之间反复沟通尺寸和颜色值?Sketch MeaXure插件正是解决这一…...
OpenClaw多语言支持:Qwen3-14b_int4_awq处理中英文混合任务
OpenClaw多语言支持:Qwen3-14b_int4_awq处理中英文混合任务 1. 为什么需要多语言支持的个人助手 作为一个长期在技术领域工作的开发者,我经常遇到这样的场景:阅读英文技术文档时需要快速提取关键点,编写中文技术博客又需要引用英…...
实战踩坑:我用PHP测试了3个免费IP定位库,这个准确率最高(附完整代码)
实战踩坑:我用PHP测试了3个免费IP定位库,这个准确率最高(附完整代码) 上周接手一个海外电商项目,需要在用户登录时自动显示国家/地区信息。原本以为调用个免费IP库分分钟搞定,结果连续踩坑——有的库返回&q…...
