创建conda环境报PackagesNotFoundError错误如何解决
问题根因
你遇到的报错本质是混用了pip和conda的依赖规则,操作逻辑从根上错了:
- 你拿到的requirements.txt是作者用
pip freeze从自己本地环境导出的,所有带=pypi_0标记的条目都是PyPI源的pip包,conda默认不会跨源去PyPI拉包,自然报找不到,连numpy这种常用包报错都是这个原因,和你加没加conda-forge频道没关系。 - 你手动去掉
pypi_0后缀的操作只改了文本格式,没解决包来源的问题:剩下的报错包分三类:一类是只在PyPI发布、conda源从来没收录过的(比如opencv-python、nvidia-ml-py3、node2vec);一类是conda源没有对应老旧历史版本的(比如0.2.4版的antspyx、0.16.1版的mriqc);还有一类是本身就不存在于conda源的无效包(比如sklearn==0.0是pip下的空占位包,conda里从来没有过这个包名)。 - 另外这个依赖列表是作者全量导出的本地环境快照,混了大量他自己装的临时包、开发版包,很多包现在已经从公开源下架了,直接丢给conda解析100%失败。
正确创建环境的操作步骤
- 先创建干净的基础conda环境,根据依赖里的tensorflow 2.5、numpy 1.19.5版本匹配,选Python 3.8兼容性最好,避免高版本Python出现适配问题:
conda create -n CHA_cVAE python=3.8 -y conda activate CHA_cVAE
- 优先用conda安装体积大、编译依赖复杂的科学计算包,走conda-forge源,避免pip安装时出现本地编译报错:
conda install -c conda-forge numpy=1.19.5 nibabel=3.2.1 dipy=1.4.1 h5py=3.1.0 scikit-learn=1.0.1 xgboost=1.5.1 imbalanced-learn=0.8.1 umap-learn=0.4.6 gensim=4.1.2 hdbscan=0.8.27 ipython=7.10.0 ipykernel=5.5.0 plotly=4.14.0 pytest=6.2.5 mako=1.1.4 paramiko=2.7.2 pynacl=1.4.0 bcrypt=3.2.0 fabric=2.6.0 invoke=1.5.0 traits=6.3.2 google-auth=1.23.0 oauthlib=3.1.0 requests-oauthlib=1.3.0 pyasn1=0.4.8 pyasn1-modules=0.2.8 rsa=4.6 cachetools=4.1.1 protobuf=3.14.0 grpcio=1.34.1 absl-py=0.11.0 markdown=3.3.3 tensorboard=2.6.0 termcolor=1.1.0 wrapt=1.12.1 gast=0.4.0 opt-einsum=3.3.0 astunparse=1.6.3 keras-preprocessing=1.1.2 google-pasta=0.2.0 flatbuffers=1.12 python-levenshtein=0.12.2 pygsp=0.5.1 rdflib=6.1.1 isodate=0.6.1 pycuda=2020.1 -y
- 剩下conda源找不到的包,直接用当前环境的pip安装,不要用系统全局pip:
pip install tensorflow==2.5.0 tensorflow-estimator==2.5.0 keras==2.6.0 tensorboard-data-server==0.6.1 tensorboard-plugin-wit==1.7.0 tensorflow-gpu==2.3.1 pip install node2vec==0.4.3 karateclub==1.2.2 python-louvain==0.15 smart-open==5.2.1 pip install nvidia-smi==0.1.3 nvidia-ml-py3==7.352.0 pip install antspyx==0.2.4 nipype==1.7.0 niworkflows==1.1.12 mriqc==0.16.1 pybids==0.14.0 bids-validator==1.8.4 templateflow==0.7.2 etelemetry==0.2.2 nitime==0.9 prov==2.0.0 xvfbwrapper==0.2.9 farneback3d==0.1.3 transforms3d==0.3.1 svgutils==0.3.1 ansiwrap==0.8.4 textwrap3==0.9.2 webcolors==1.11.1 ci-info==0.2.0 simplejson==3.17.6 nbformat==5.1.3 colorama==0.4.3 docopt==0.6.2 pip install boto3==1.18.6 botocore==1.20.73 s3transfer==0.5.0 jmespath==0.10.0 awscli==1.19.73 docutils==0.15.2 pip install papermill==2.3.3 black==21.8b0 pathspec==0.9.0 mypy-extensions==0.4.3 tomli==1.2.1 platformdirs==2.3.0 appdirs==1.4.4 executing==0.8.0 asttokens==2.0.5 prettytable==2.1.0 num2words==0.5.10 chart-studio==1.1.0 python-graphviz==0.18.2 pydot==1.4.2 pytools==2021.1.2 tenacity==8.0.1 interface-meta==1.2.4 formulaic==0.2.4 sorcery==0.2.1 pyrcca==0.2 nda-tools==0.2.8 opencv-python==4.5.1.48 install==1.3.4 joblib==1.0.1 clang==5.0 typing-extensions==4.0.1
几个避坑提醒:
- 列表里所有带
nightly后缀的tensorflow、keras、tensorboard开发版包,是作者当时临时装的每日构建快照,2020年的旧版本早就从PyPI下架了,这些包和正式版2.5.0的tensorflow功能完全一致,不需要刻意找旧包安装,装正式版即可正常运行项目代码。sklearn==0.0是无效空包,不需要安装,之前conda步骤装的scikit-learn就是对应功能的正确包。- 所有安装操作必须在激活
CHA_cVAE环境之后执行,避免包装到base环境里。
- 全部安装完成后执行一行命令验证核心包是否正常导入,没有报错就说明环境可用:
python -c "import tensorflow; import nibabel; import ants; import nipype; print('环境创建成功,TF版本:', tensorflow.__version__)"
内容的提问来源于stack exchange,提问作者Danny Han
相关产品推荐
相关产品推荐

