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参数项:即,或者使用Linux系统吧...pip-sync --user
(但是发现覆盖了pip list,和conda虚拟环境下的conda list不一致,#need to fix)
后续:(不推荐使用上面暂时的解决方案,因为在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 create -n env_name python=x.x
其中,env_name,x.x分别为环境名和python版本号。)
示例的environment.yml文件如下:name后面改为自己的环境名。
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。
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
就可以愉快地进行玩耍啦。