pip-sync出现的问题以及torch安装方式

有任何问题,大家可以一起交流心得。


windows下使用pip-sync出现了类似如下的error(使用开源库的时候,尽可能还是避开windows…不然会有很多奇怪的坑):

pip-sync requirements/prod.txt requirements/dev.txt
Found existing installation: wincertstore 0.2
ERROR: Cannot uninstall 'wincertstore'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
Traceback (most recent call last):
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Anaconda3\envs\fsdl-text-recognizer-2021\Scripts\pip-sync.exe\__main__.py", line 7, in <module>
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\site-packages\click\core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\site-packages\click\core.py", line 782, in main
    rv = self.invoke(ctx)
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\site-packages\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\site-packages\piptools\scripts\sync.py", line 150, in cli
    ask=ask,
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\site-packages\piptools\sync.py", line 190, in sync
    + sorted(to_uninstall)
  File "d:\anaconda3\envs\fsdl-text-recognizer-2021\lib\subprocess.py", line 311, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['d:\\anaconda3\\envs\\fsdl-text-recognizer-2021\\python.exe', '-m', 'pip', 'uninstall', '-y', 'wincertstore']' returned non-zero exit status 1.

主要原因是这句:‘Cannot uninstall ‘wincertstore’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.’ 但是,就算我手动删除该库,也没办法正常pip-sync。
暂时的解决方案使用带–user参数项:即pip-sync --user(但是发现覆盖了pip list,和conda虚拟环境下的conda list不一致,#need to fix),或者使用Linux系统吧…


后续:(不推荐使用上面暂时的解决方案,因为在windows系统下面,会安装一个Python目录到%appdata%目录下。不仅如此,在激活了虚拟环境下,使用命令where python和where pip,会出现(base)环境下面的python和pip,产生了python环境的混淆。所以本人无奈重装了anaconda,重装前记得保留想要保留的环境文件夹(envs/)。)

建议先把pip降级到9.0.0,然后安装对应版本的pip-tools,然后执行一次pip-sync,此时可能会成功,或者提示其他的error。如果提示其他的error或者前面直接成功的话,则升级pip,然后把pip-tools也升级之后,再执行一次pip-sync。

  • 降级pip和安装pip-tools的方法:
python -m pip install pip==9.0.0
pip install pip-tools==4.5.1 # 针对pip版本为9.0.0

降级之后,pip-sync出现的结果是:DEPRECATION: Uninstalling a distutils installed project (wincertstore) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project. Uninstalling wincertstore-0.2: Successfully uninstalled wincertstore-0.2 可以成功卸载掉上面没办法卸载的库了,后续也就不会卡在上边提到的error了。

  • 升级pip和安装pip-tools的方法:
python -m pip install --upgrade pip
pip install pip-tools==5.5.0 # 针对pip版本为21.0.1

如果不幸把pip弄坏了,用下面的方式修复和升级pip:

python -m ensurepip
python -m pip install --upgrade pip

pytorch安装示意:

步骤1:先用conda弄个虚拟环境出来:(没有conda的,到Anaconda官网下载,会内置最新的Python3.8,但还是建议创建3.6版本的虚拟环境。)
新建如下示例的environment.yml文件:name后面改为自己的环境名。(-pip: -pip-tools可以去掉,如果不用到pip-tools进行依赖管理的话。)

name: FSDL
channels:
  - defaults
dependencies:
  - python=3.6  # Google Colab is still on Python 3.6
  - cudatoolkit=10.1
  - cudnn=7.6
  - pip
  - pip:
    - pip-tools

然后,可以使用以下两个命令中的一个(一个是创建新的,另一个是更新(如果没有会进行创建)),根据配置文件创建虚拟环境:

conda env create -f environment.yml
或者
conda env update --prune -f environment.yml

步骤2:激活环境,安装pytorch的gpu版本。
pytorch的安装命令如下(直接参考官网的命令即可,注意要换成自己需要的torch版本和cu版本。而且torchvision、torchaudio对torch是有版本号要求的):

pip install torch==1.8.0+cu101 torchvision==0.9.0+cu101 torchaudio===0.8.0 -f https://download.pytorch.org/whl/torch_stable.html # cu后面的版本号,与自己上面环境中设定的cudatoolkit的版本号有关。

只要弹出Successfully installed torch-1.8.0+cu101 torchaudio-0.8.0 torchvision-0.9.0+cu101就可以愉快地进行玩耍啦。可以通过程序验证一下是不是能用cuda。

import torch
torch.cuda.is_available() # True的话,就说明gpu版本成功安装了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值