由于公司的办公电脑只能在内网环境使用,所以熟悉的使用
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
即可批量安装所有软件包。
版权归原作者 柚子Citron 所有, 如有侵权,请联系我们删除。