由于公司的办公电脑只能在内网环境使用,所以熟悉的使用pip install some-package
命令安装Python软件包的方法不能使用,需要实现离线安装Python软件包。下面介绍2种离线安装Python软件包的方法。
方法1:离线安装单个Python软件包
在可以连接外网的电脑上使用pip download some-package
命令下载离线Python软件包,这时会有2种情况:
1. 所要安装的包不需要依赖其他包
由于所要安装的包不需要依赖其他包,只有一个文件会被下载下来。离线安装时使用pip install 下载的文件路径
即可,以urllib3
包为例:
pip download urllib3 -i https://pypi.tuna.tsinghua.edu.cn/simple
使用此命令下载后得到一个urllib3-1.26.12-py2.py3-none-any.whl文件,离线安装时使用命令
pip install urllib3-1.26.12-py2.py3-none-any.whl
有些包下载的文件格式可能为tar.gz,这表示下载的文件是源码形式的,也可以直接进行安装,pip会自动对源码进行构建,然后安装。不过这时推荐在下载包时使用pip wheel some-package
命令,该命令下载的文件格式为whl,这表示下载的文件是预构建形式的,相比于源码形式的文件,它可以提供速度更快的安装。
2. 所要安装的包需要依赖其他包
由于所要安装的包需要依赖其他包,会有多个文件会被下载下来。离线安装时直接使用pip install 下载的文件路径
会导致pip找不到依赖而报错,这时需要添加--find-links=路径
选项来指定寻找依赖的路径,以requests
包为例:
pip download requests -d packages -i https://pypi.tuna.tsinghua.edu.cn/simple
-d packages
选项表示将多个文件保存在packages文件夹下。使用此命令下载后可以在packages文件夹中找到5个文件,分别是requests-2.28.1-py3-none-any.whl、certifi-2022.6.15-py3-none-any.whl、charset_normalizer-2.1.1-py3-none-any.whl、idna-3.3-py3-none-any.whl和urllib3-1.26.12-py2.py3-none-any.whl,离线安装时使用命令
pip install --no-index --find-links=packages requests
--no-index
选项表示不要检查PyPI。此处有一个坑,如果你下载下来的文件格式是tar.gz,那么运行此命令时会得到一个报错
Installing build dependencies ... error error: subprocess-exited-with-error × pip subprocess to install build dependencies did not run successfully. │ exit code: 1 ╰─> [3 lines of output] Looking in links: . ERROR: Could not find a version that satisfies the requirement setuptools (from versions: none) ERROR: No matching distribution found for setuptools [end of output] note: This error originates from a subprocess, and is likely not a problem with pip.error: subprocess-exited-with-error× pip subprocess to install build dependencies did not run successfully.│ exit code: 1╰─> See above for output.note: This error originates from a subprocess, and is likely not a problem with pip.
个人感觉这个错误是由于pip在安装依赖时不能正确构建源码所致,要解决这个问题只能在下载包时使用上面提到的pip wheel some-package
命令,这个命令只会下载whl格式的包,安装时不会出现上述问题。
方法2:批量离线安装多个Python软件包
方法1适用于安装少量包的情况,如果要安装多个包,方法1使用起来就不太方便了。要批量安装多个包,首先在可以连接外网的电脑上使用pip安装所有所需的包,然后使用
pip freeze > requirements.txt
生成一个包括所有包的requirements.txt文件。使用
pip wheel -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
下载所有包。这里只推荐使用pip wheel
命令来下载包,因为使用pip download
命令下载多个包时不可避免的会下载到非whl格式的文件,后续安装时容易报错。不过pip wheel
命令不能使用-d
选项把下载的文件放在一个文件夹里,只能放置在当前文件夹下,所以建议提前新建一个文件夹来存放下载的包文件,requirements.txt文件与下载的文件在同一目录下即可。离线安装使用
pip install --no-index --find-links=. -r requirements.txt
即可批量安装所有软件包。
来源地址:https://blog.csdn.net/qq_44983130/article/details/126691928