无外网下安装Python包的方法
一、离线安装包下载
在没有外网的情况下,如果需要安装Python包,可以通过下载离线安装包的方式进行安装(该方法可以自动下载各种依赖的包whl文件,强烈推荐)。
首先需要在有外网的机器上,使用pip下载需要的Python包及其依赖,然后将这些包打包保存到本地或移动存储设备中。例如,在有外网的机器上下载numpy包及其依赖:
pip download numpy -d /path/to/packages --no-binary Django
其中-d参数指定了下载的包保存到的路径,–no-binary Django参数表示不下载预编译的二进制包,以避免平台兼容性问题。
将下载的包打包保存到本地或移动存储设备中,例如:
tar czf numpy.tar.gz /path/to/packages
然后将压缩包拷贝到待安装Python环境所在的机器上解压即可:
tar xzf numpy.tar.gz -C /path/to/installation
在解压后的目录中运行安装命令即可:
pip install numpy***.whl -f /path/to/packages
其中,-f参数指定了额外的索引地址,即离线安装包所在的目录。
补充说明:
这是自己在项目中遇到的情况:因为下载包的电脑Python和服务器中无网络的Python版本不一致,导致有一些对版本要求比较严格的包很难下载到合适的版本,强烈建议在有网的电脑中下载和服务器上面一样版本的Python版本来干这个事情。
二、使用代理服务器
如果无法下载离线安装包,可以通过使用代理服务器来安装Python包。
可以在安装时指定代理服务器的地址和端口,例如:
pip install Django --proxy=http://user:password@proxy_server:port
其中,–proxy参数指定了代理服务器的地址和端口,如果需要认证,则可以在地址后面添加用户名和密码。
如果需要使用Socks代理,可以使用–proxy参数的socks5选项,例如:
pip install Django --proxy=socks5://user:password@proxy_server:port
如果需要使用Http代理,可以使用–proxy参数的http选项,例如:
pip install Django --proxy=http://user:password@proxy_server:port
三、手动安装依赖
如果Python包依赖的第三方库也无法通过下载或代理服务器获得,可以尝试手动安装这些依赖。
首先需要找到这些库的安装包,可以在有外网的机器上下载并打包保存到本地或移动存储设备中,然后在待安装Python环境所在的机器上解压并手动安装:
tar xzf dependency.tar.gz -C /path/to/installation
pip install /path/to/installation/dependency
如果需要安装的依赖库还有依赖的其他库,则需要依次手动安装所有依赖。
四、使用conda
除了pip,还可以使用conda来进行Python包的安装。
在没有外网的情况下,可以使用conda-pack来打包需要安装的Python包及其依赖,例如:
conda create --name my_env python=3.8
conda activate my_env
conda install Django
conda pack -n my_env
其中,–name参数指定了新创建的环境名称,conda pack命令将环境的所有文件打包成一个.tar.gz文件,保存到本地或移动存储设备中。
然后,在待安装Python环境所在的机器上解压打包文件,并使用conda进行安装:
tar xzf my_env.tar.gz
conda create --prefix /path/to/installation/my_env python=3.8
conda-unpack
注意,需要先创建一个空的conda环境,并指定prefix参数为待安装Python环境所在的路径,然后使用conda-unpack解压打包文件,最后使用conda activate命令激活环境即可。
五、使用wheel文件
如果需要安装的Python包本身没有依赖,可以使用wheel文件进行安装。
首先需要在有外网的机器上下载对应的wheel文件,然后在待安装Python环境所在的机器上使用pip进行安装,例如:
pip install Django-3.2.7-py3-none-any.whl
如果需要指定额外的索引地址,则可以使用-f参数,例如:
pip install Django-3.2.7-py3-none-any.whl -f https://pypi.tuna.tsinghua.edu.cn/simple/
其中,-f参数指定了额外的索引地址,这里使用了清华大学的pip源。
备注:上述方法和文章来自https://www.python100.com/html/5PVD19O19MX6.html
Ctrl+c仅供学习使用,第一次看到这么齐全的,特地记录一下,在很多时候工作环境没有网络,需要离线安装一些包简直不要太方便!