项目

一般

简介

Pip

  1. 从本地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 上查找任何包。
    
  2. 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
    
  3. pip下载whl
    pip download pyopenssl cryptography -d /tmp
    注意:
    -i 指定源
    --no-deps 禁用依赖下载
    -d 下载到指定目录
    <package_name>==<version> 指定版本的包
    --platform <platform> --python-version <python_version> 指定平台指定python版本
    
  4. 查看包信息、依赖
    pip show <package_name>
    
  5. 更新包
    # 更新
    pip install --upgrade <package_name>
    # 更新到指定版本
    pip install <package_name>==<version>