Pip¶
- 从本地whl安装requirements.txt
pip install --no-index --find-links=./whls -r requirements.txt /usr/bin/python3 -m pip install --no-index --find-links=./whls -r requirements.txt --no-index 和 --find-links 是 pip install 命令中的两个选项,具体含义如下: 1. --no-index: 这个选项告诉 pip 不要从 PyPI(Python Package Index)索引中查找包。也就是说,pip 将不会尝试连接到互联网来查找包,而是只会使用本地提供的包。 2. --find-links=./whls: 这个选项指定了一个本地目录(在这个例子中是 ./whls),pip 将在这个目录中查找要安装的包。pip 会在这个目录中查找 .whl 文件(Python 的轮子包格式),并尝试从中安装所需的包。 结合起来,这个命令的意思是:从本地的 ./whls 目录中安装包,而不去 PyPI 上查找任何包。
- pip install报错
报错:AttributeError: module 'lib' has no attribute 'X509_V_FLAG_NOTIFY_POLICY' curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py --force-reinstall pip3 uninstall pyOpenSSL pip3 install pyOpenSSL pyOpenSSL 25.0.0(重新安装后版本) :<<EOF 注意:报错的原因可能是 Attempting uninstall: cryptography Found existing installation: cryptography 2.8 Not uninstalling cryptography at /usr/lib/python3/dist-packages, outside environment /usr Can't uninstall 'cryptography'. No files were found to uninstall. 说明已经使用apt安装过该包在/usr/lib/python3,而pip安装的包在/usr/local/python3,无法卸载apt安装的包,解决方法有3种: 1. pip install --ignore-installed <package_name> 直接在/usr/local/python3再装一个,新版本会安装到 /usr/local/lib/python3.x/dist-packages/,而旧版本仍然保留在 /usr/lib/python3.x/dist-packages/。由于 Python 会优先加载 /usr/local/lib/python3.x/dist-packages/ 中的包,因此新版本会生效。 2. pip install --upgrade <package_name> 如果旧版本是由系统包管理器安装的,pip 可能无法卸载它,并会报错(如你之前看到的错误)。此时,pip 仍然会尝试安装新版本到 /usr/local/lib/python3.x/dist-packages/ 3. apt先卸载 查找包名:dpkg -S /usr/lib/python3.x/dist-packages/<package_name> dpkg -S /usr/lib/python3/dist-packages/cryptography python3-cryptography: /usr/lib/python3/dist-packages/cryptography 卸载包:apt remove <system_package_name> pip安装:pip install <package_name> EOF
- pip下载whl
pip download pyopenssl cryptography -d /tmp 注意: -i 指定源 --no-deps 禁用依赖下载 -d 下载到指定目录 <package_name>==<version> 指定版本的包 --platform <platform> --python-version <python_version> 指定平台指定python版本
- 查看包信息、依赖
pip show <package_name>
- 更新包
# 更新 pip install --upgrade <package_name> # 更新到指定版本 pip install <package_name>==<version>