pip笔记
安装python包超时失败
stackoverflow :How to solve ReadTimeoutError: HTTPSConnectionPool(host=’pypi.python.org’, port=443) with pip?
解决安装Python包时超时失败ReadTimeoutError: HTTPSConnectionPool(host=’files.pythonhosted.org’, port=443)
遇到超时 timeout error:
方法1. 添加镜像源:
使用国内的镜像源安装。在原来安装时在命令里加一个参数 -i,然后在i后面加国内镜像地址。
选择国内的镜像源列表如下:
清华源: https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云: http://mirrors.aliyun.com/pypi/simple/
中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban):http://pypi.douban.com/simple/
清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/
1 | pip install statsmodels -i https://pypi.tuna.tsinghua.edu.cn/simple/ |
方法2:
1 | sudo pip install --default-timeout=100 xx包 |
方法3:
1 | python -m pip install --upgrade pip |
以下是chatgpt回答
在安装Python包时如果超时失败,可以尝试以下几种方法:
- 增加超时时间:可以在安装命令前添加参数,例如
pip install --default-timeout=1000 <package-name>
,以增加超时时间。 - 更换镜像源:可以尝试使用国内镜像源进行安装,以减少安装时间。
- 选择本地包:如果安装某个包时出现超时失败,可以尝试手动下载该包的.whl文件并使用
pip install <whl-file>
命令进行安装。 - 尝试其他安装方法:如果使用
pip install
命令安装失败,可以尝试使用conda install
或其他安装方法进行安装。
pip安装的路径在哪里
以下是chatgpt回答
在 Windows 系统中,默认情况下 pip 安装的路径位于 Python 安装目录下的 Scripts 目录中,例如 C:\PythonXX\Scripts
,其中 XX
代表 Python 的版本号。
在 Linux 和 macOS 系统中,pip 安装的路径通常位于 /usr/local/bin
或 /usr/bin
目录中。
可以使用以下命令查找 pip 安装的具体路径:
1 | which pip |
或者在命令行中运行:
1 | pip show pip |
它将显示 pip 包的详细信息,其中包括安装路径。
选择让pip安装在anaconda的虚拟环境中或默认环境中
就是切换(activate激活)到虚拟环境中。
有三类pip:
- 第一类没有在anaconda环境中,也有装pip工具的,pip install时,安装的包的路径一般在
/usr/bin
下; - 第二类在anaconda的base环境中,pip install时,安装的包的路径一般在
XX/anaconda3/bin
下; - 第二类在anaconda的自建的环境中,pip install时,安装的包的路径一般在
XX/anaconda3/envs/XX/bin
下;
以下回答来自chatgpt
如果想在 Anaconda 虚拟环境中使用 pip,请按以下步骤操作:
创建虚拟环境:首先需要创建 Anaconda 虚拟环境,使用以下命令创建:
1
conda create --name <env_name>
其中
<env_name>
是虚拟环境的名称。激活虚拟环境:使用以下命令激活虚拟环境:
1
conda activate <env_name>
在虚拟环境中安装 pip:在虚拟环境中使用以下命令安装 pip:
1
conda install pip
现在,您已在 Anaconda 虚拟环境中安装了 pip,并且可以使用它来安装 Python 包。在使用 pip 安装包时,请确保该虚拟环境处于激活状态。
用pip安装自己写的包
要用pip安装自己写的包,可以使用pip install命令,并传入该包的路径作为参数:
1 | pip install /path/to/your_package.tar.gz |
如果该包未打包成.tar.gz或.whl文件,需要先打包,然后再使用pip install命令安装。
打包方法:
打包为.tar.gz文件:
1
python setup.py sdist
打包为.whl文件:
1
python setup.py bdist_wheel
完成打包后,就可以使用pip install命令安装自己写的包了。
安装完 发现有问题:XXXapi.so: undefined symbol报错怎么办?
这个错误通常是由于共享库中缺少必要的符号引起的。原因可能是:
缺少依赖库:检查它是否已安装,并确保它在系统库搜索路径中,或者使用环境变量LD_LIBRARY_PATH来指定其位置。具体地:
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
把这个库链接到lib的path里,再试一试。版本不兼容:检查该库的版本与使用它的程序的版本是否兼容。
损坏的共享库:重新安装该库并确保其完整性。
如果仍然不能解决问题,可以在问题的具体环境下向社区寻求帮助,例如编程论坛或 Stack Overflow。
具体报错为:ImportError: /mnt/k/anaconda3/envs/wenet/lib/python3.8/site-packages/torch/lib/libtorch_cuda_cpp.so: undefined symbol: _ZNK3c104Type14isSubtypeOfExtERKSt10shared_ptrIS0_EPSo
torch下载慢
解决方法:直接在浏览器里下载网页的链接wsl文件,然后pip install手动安装。
另一种方法,换channel:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
今天以pytorch1.7.1举栗子。
pytorch官网查看pytorch安装命令
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0
-c pytorch
1
首先,使用命令将下述网址添加conda源
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
1
其次,最后使用新的安装命令,将-c pytorch去掉,表示从我们配置的新路径中下载
conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0
pip install -r
在 pip install 时可以通过使用 -r 参数来安装一个包的依赖。比如,如果你想要安装包A,并且包A需要包B才能工作,你可以使用以下命令:
1 | pip install -r requirements.txt |
其中 requirements.txt 文件是一个文本文件,包含了需要安装的所有包的名称,比如:
1 | packageB |
运行以上命令后,pip 会先安装包B,再安装包A。
pip install 链接已有的包
使用 pip install 命令可以从网络上下载并安装包,你也可以通过链接已有的包安装。使用“-f”参数即可:
1 | pip install -f <path-to-dependency> <your-package> |
其中,<path-to-dependency>
是已有包的路径,<your-package>
是你的包名称。在执行此命令时,pip 将使用路径指向的包作为依赖安装。
pip install参数解释
语法
pip install
命令的语法格式如下
1 | pip install [options] <requirement specifier> [package-index-options] ... |
或
1 | pip install [options] -r <requirements file> [package-index-options] ... |
或
1 | pip install [options] [-e] <vcs project url> ... |
或
1 | pip install [options] [-e] <local project path> ... |
或
1 | pip install [options] <archive url/path> ... |
pip install
命令可以从以下地址安装包
- 使用需求说明符从 PiPY 或其它索引上安装
- VCS 项目网址
- 本地项目目录
- 本地或远程源代码归档
pip 还支持从 「 需求文件 」 ( requirements file ) 安装,这为安装指定的整个环境提供了一种简便方法
-c, --constraint <file>
使用给定的约束文件约束版本,该选项可以重复添加
-r, --requirement <file>
从给定的需求文件中安装,该选项可以重复添加
按照惯例,需求文件名为
requirements.txt
--no-deps
不安装包的任何依赖项
--pre
包含预发布版本和开发版本,默认只会包行稳定的版本
-e, --editable <path/url>
在可编辑模式下从一个本地的项目路径或 VCS URL 中安装一个项目 ( 例如,setuptools 的 「 开发者模式 」 )
-t, --target <dir>
将包安装到指定目录
<dir>
默认情况下,该选项并不会覆盖
<dir>
目录中已经存在的文件或目录,但可以使用--upgrade
选项将已经存在的包更新到最新的版本--user
将所有的包安装到我们的平台的Python 用户安装目录,通常为
~/.local/
或 Windows 上为%APPDATA%Python
( 更多详细信息,可以查看 Python 文档中的site.USER_BASE
部分 )--root <dir>
安装与此备用根目录
<dir>
包含的所有内容--prefix <dir>
安装时,
lib
、bin
和其它顶级目录的存放目录,也就是这些目录的路径前缀-b, --build <dir>
用于存放解压缩的包和构建的包
请注意,初始构建仍发生在临时目录中
可以通过适当地设置
TMPDIR
环境变量 ( Windows上的TEMP
) 来控制临时目录的位置注意,如果使用了该参数,当构建发生故障时,并不会清空构建目录
--src <dir>
用于存放迁出的可编辑项目
在虚拟环境中,默认的目录为
<venv path>/src
, 在全局安装中,默认的目录为<current dir>/src
-U, --upgrade
更新所有指定的包到最新的可用版本。 依赖项的处理取决于所使用的升级策略
--upgrade-strategy <upgrade_strategy>
确定应如何处理依赖项升级 ( 默认值:「 仅在需要时 」)
eager
- 无论当前安装的版本是否满足升级包的要求,都会升级依赖项only-if-needed
- 仅在不满足升级包的要求时才升级
--force-reinstall
重新安装所有的包,即使它们已经是最新的版本
-I, --ignore-installed
忽略已经安装的包 ( 用重新安装取代 )
--ignore-requires-python
忽略 Requires-Python 信息
--no-build-isolation
在构建现代的源代码分发包是禁用隔离
如果使用了此选项,则必须已安装 PEP518 规定的构建依赖项
--install-option <options>
安装时提供给
setup.py
安装命令的额外参数( 使用方法类似于--install-option="--install-scripts=/usr/local/bin"
)可以使用多个
--install-option
选项将多个选项传递给setup.py install
如果你使用带有目录路径的选项,请确保使用绝对路径
--global-option <options>
在
bdist_wheel
命令之前提供给setup.py
调用的额外全局选项--compile
将 Python 源代码编译为 bytecode
--no-compile
不要将 Python 源代码编译为
bytecode
--no-warn-script-location
当安装脚本不在
PATH
路径中时不要发出警告--no-warn-conflicts
出现已损坏的依赖关系时不要发出警告
--no-binary <format_control>
不使用二进制包
该选项可以重复添加,每增加一个就会自增当前的值
可选的值有
:all:
:禁用所有二进制包:none:
:清空集合,或者使用逗号之间的一个或多个包名称
注意,某些软件包编译起来很棘手,并且,即使在添加了此选项后仍然可能无法安装
--only-binary <format_control>
不使用源代码包
该选项可以重复添加,每增加一个就会自增当前的值
可选的值有
:all:
:禁用所有源代码包:none:
:清空集合,或者使用逗号之间的一个或多个包名称
注意,没有二进制发行版的软件包在使用此选项时将无法安装
--no-clean
不要清空构建目录
--require-hashes
对于可重复安装,需要根据哈希值来检查每个需求
如果需求文件中的任何一项包含了
--hash
选项,则隐式包含此选项--progress-bar <progress_bar>
用于指定要显示的进度条类型,可选项有
on
、ascii
、off
、pretty
、emoji
,默认为on
-i, --index-url <url>
Python 包索引的基础 URL 地址,默认为 https://pypi.org/simple
该选项的值应该指向符合 PEP503 ( 简单存储库 API ) 的存储库或以相同格式布局的本地目录
--extra-index-url <url>
除了
--index-url
之外的附加的 Python 包索引 URL,规则和--index-url
一样--no-index
忽略包索引,使用
--find-links
指定的 URL-f, --find-links <url>
如果提供的 URL 或路径链接到一个 html 文件,则会解析该 html 文件以获取归档
如果是本地目录,或
file://url
指向的是一个目录,那么就在该目录中查找归档--process-dependency-links
启用依赖关系链接的处理