requirement.txt使用踩坑记录

目录

1 生成requirement.txt

2 建立虚拟环境

3 导入requirement.txt

4 可能遇到的问题和解决办法


最近需要在新设备上复现环境,之前尝试过使用requirement.txt,好像很简单,今天再试突然多了很多坑,不知道又是哪里抽风。。。于是记录一下

1 生成requirement.txt

在原工作环境中的anaconda prmpt中输入

pip list --format=freeze > requirement.txt

注意观察窗口的中的路径信息,如下图红框部分,请在这个路径中找到生成的requirement.txt文件

2 建立虚拟环境

在新设备上建立新的虚拟环境放requirement.txt里的各种包,以免污染原有工作环境。python版本要和运行requirement.txt的python版本一致,不然可能会和里面的安装包产生版本冲突。

conda create -n xxxxx(名字) python=x.xx

建完虚拟环境后,手动建立numpy,最新版本的也可以。requirement.txt里原本可能有numpy,但不知道为什么如果不安装会和别的包产生冲突,然后报错,不理解。。。。搜了个帖子说直接安装最新版的numpy可以解决,于是就删了requirement.txt里的numpy版本信息。

另一个经常产生依赖冲突的是pytorch,懒得看是为什么产生冲突了,在requirement.txt直接删了torchaudio和torchvision,再手动安装一下对应的版本。

3 导入requirement.txt

首先把获取的requirement.txt放在新设备虚拟环境的路径里,默认路径通常为C:\Users\xxx\.conda\envs\虚拟环境名称。

再在新设备的anaconda prmpt上激活新建的虚拟环境

activate 虚拟环境名称

把路径指定成放requirement.txt的路径 C:\Users\xxx\.conda\envs\虚拟环境名称

最后输入

python.exe -m pip install -r requirement.txt

大致如下图所示,红框部分是自拟的虚拟环境名称

然后顺利的话就是会一直下载就完事了。

当然如果顺利的话就不会有这个帖子。。。。。接下来会有一些奇怪的报错,贴一下我的解决办法供参考。

4 可能遇到的问题和解决办法

第一类 版本号识别有误报错

ERROR: Could not find a version that satisfies the requirement 
pywin32==305.1 (from versions: 302, 303, 304, 305, 306)
ERROR: No matching distribution found for pywin32==305.1
ERROR: Could not find a version that satisfies the requirement 
torchvision==0.15.2a0 (from versions: 0.12.0, 0.13.0, 0.13.1, 0.14.0, 0.14.1, 0.15.1, 0.15.2, 0.16.0, 0.16.1, 0.16.2, 0.17.0, 0.17.1, 0.17.2, 0.18.0, 0.18.1, 0.19.0)
ERROR: No matching distribution found for torchvision==0.15.2a0

类似于上面这种错误,先去原工作环境中用conda list语句输出各种包的列表,和requirement.txt文件对比检查一下,有可能是自动生成requirement.txt的时候识别错了。比如经检查后发现,pywin32的版本号应该是305而不是305.1;torchvision的版本号应该是0.15.2,requirement.txt文件上识别成了0.15.2a0(可惜后面torchvision还是遇到了依赖冲突的问题qwq)。

这种错误比较好办,就直接在requirement.txt上修改正确即可。

第二类 包版本冲突报错

ERROR: Could not find a version that satisfies the requirement 
mkl_fft==1.3.1 (from versions: 1.3.6, 1.3.8)
ERROR: No matching distribution found for mkl_fft==1.3.1

上面这个好像是numpy的依赖包?看报错的原因好像是目前的版本只有1.3.6和1.3.8,于是我把这个版本信息在txt文件里删掉了,如果需要的话后面再手动安装一下。不过后面的实践中产生了numpy的依赖错误,我在新环境中手动安装了numpy最新版本后,发现这个mkl-fft神奇地出现了,所以可以暂且不管。

​
ERROR: Cannot install -r requirement.txt (line 20), -r requirement.txt (line 37), -r requirement.txt (line 38), -r requirement.txt (line 40), -r requirement.txt (line 42), -r requirement.txt (line 47), -r requirement.txt (line 48), -r requirement.txt (line 50), -r requirement.txt (line 52), -r requirement.txt (line 60), -r requirement.txt (line 64) and numpy because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested numpy
    folium 0.14.0 depends on numpy
    lingam 1.8.3 depends on numpy
    mapclassify 2.5.0 depends on numpy>=1.3
    matplotlib 3.8.4 depends on numpy>=1.21
    mkl-random 1.2.2 depends on numpy<1.25.0 and >=1.24.3
    numdifftools 0.9.41 depends on numpy>=1.9
    numexpr 2.8.4 depends on numpy>=1.13.3
    pandas 2.2.2 depends on numpy>=1.22.4; python_version < "3.11"
    patsy 0.5.6 depends on numpy>=1.4
    psy 0.0.1 depends on numpy
    pygam 0.9.1 depends on numpy>=1.25; python_version >= "3.9" and python_version < "3.13"

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip to attempt to solve the dependency conflict

​
ERROR: Cannot install -r requirement.txt (line 94), -r requirement.txt (line 95) and torch==2.3.1 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested torch==2.3.1
    torchaudio 2.3.1 depends on torch==2.3.1
    torchvision 0.15.2 depends on torch==2.0.1

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip to attempt to solve the dependency conflict

以上两个错误看不懂,可能就是版本不匹配吧。解决方法是在哪个少删哪个,哪个手动下载简单删哪个。

有很多包依赖numpy,然后版本不兼容报错,于是就先手动下numpy最新的版本,在txt文件中把numpy的版本信息改成numpy最新的版本号(比如原信息是numpy==1.24.1改成numpy==1.26.4之类),关于它的错误就消失了。。。。

torch和另外两个不兼容,torch重新下载比另外两个麻烦,就把txt文件中的torchaudio,torchvision版本信息记录下来后删掉,等txt文件中的大部分包都导入完成后,手动下载对应版本的包即可。

第三类 不知道什么错误反正就报错

Failed to build GDAL pygraphviz
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml 
based projects (GDAL, pygraphviz)

 提示说没办法安装GDAL和pygraphviz,那就手动安装吧。。。。把requirement.txt上这俩信息删掉就行。

解决办法总结来说就是,报错就核对requirement.txt文件,还是不行就手动安装,注意安装过程中anaconda prmpt的路径要指定到放txt文件的位置,不然读取不到txt文件。

祝大家环境迁移顺利 ^ ^

<完结撒花>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值