【发布时间】:2020-01-16 20:12:12
【问题描述】:
我想在尝试其他任何可能破坏我的 Anaconda 发行版之前问一个具体问题。
conda version: 4.7.11
anaconda version: 2019.07
python version: 3.7.3
我按照here 的说明安装了opencv-python:
(base) C:\Users\...>pip install opencv-python
我认为这行得通,因为我能够在我的 Spyder IDE 中从 import cv2 运行 defs,然后 conda list 返回:
...
numpydoc 0.9.1 py_0
olefile 0.46 py37_0
opencv-python 4.1.1.26 pypi_0 pypi
openpyxl 2.6.2 py_0
...
但是,我在尝试tutorial 时很快遇到了问题。具体来说,img = cv2.imread('messi5.jpg',0) 将返回一个 None 对象。我用本地照片尝试了img = cv2.imread(r'C:\path_to_my_image.jpg',0),它正确地返回了一个二维灰度对象数组。我确信我只是未能安装 opencv 附带的照片库。
我预计会有更多问题并进行了一些挖掘,在那里我发现this 答案表明我可能没有安装正确版本的 cv。我尝试使用pip 卸载,但打开了活动目录中的文本文件,并且出现权限错误!
(base) C:\Users\triton>pip uninstall opencv-python
Uninstalling opencv-python-4.1.1.26:
Would remove:
c:\users\triton\anaconda3\lib\site-packages\cv2\*
c:\users\triton\anaconda3\lib\site-packages\opencv_python-4.1.1.26.dist-info\*
Proceed (y/n)? y
ERROR: Exception:
Traceback (most recent call last):
File "C:\Users\triton\Anaconda3\lib\shutil.py", line 563, in move
os.rename(src, real_dst)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\users\\triton\\anaconda3\\lib\\site-packages\\opencv_python-4.1.1.26.dist-info\\' -> 'c:\\users\\triton\\anaconda3\\lib\\site-packages\\~pencv_python-4.1.1.26.dist-info'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\triton\Anaconda3\lib\site-packages\pip\_internal\cli\base_command.py", line 178, in main
status = self.run(options, args)
File "C:\Users\triton\Anaconda3\lib\site-packages\pip\_internal\commands\uninstall.py", line 75, in run
auto_confirm=options.yes, verbose=self.verbosity > 0,
File "C:\Users\triton\Anaconda3\lib\site-packages\pip\_internal\req\req_install.py", line 823, in uninstall
uninstalled_pathset.remove(auto_confirm, verbose)
File "C:\Users\triton\Anaconda3\lib\site-packages\pip\_internal\req\req_uninstall.py", line 388, in remove
moved.stash(path)
File "C:\Users\triton\Anaconda3\lib\site-packages\pip\_internal\req\req_uninstall.py", line 277, in stash
renames(path, new_path)
File "C:\Users\triton\Anaconda3\lib\site-packages\pip\_internal\utils\misc.py", line 305, in renames
shutil.move(old, new)
File "C:\Users\triton\Anaconda3\lib\shutil.py", line 575, in move
rmtree(src)
File "C:\Users\triton\Anaconda3\lib\shutil.py", line 513, in rmtree
return _rmtree_unsafe(path, onerror)
File "C:\Users\triton\Anaconda3\lib\shutil.py", line 401, in _rmtree_unsafe
onerror(os.rmdir, path, sys.exc_info())
File "C:\Users\triton\Anaconda3\lib\shutil.py", line 399, in _rmtree_unsafe
os.rmdir(path)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'c:\\users\\triton\\anaconda3\\lib\\site-packages\\opencv_python-4.1.1.26.dist-info\\'
我关闭了文本文件并尝试再次运行pip uninstall opencv-python,但现在收到:
(base) C:\Users\triton>pip uninstall opencv-python
WARNING: Skipping opencv-python as it is not installed.
我不知道这个警告是否准确,因为conda list 仍将opencv-python 显示为可用包:
...
olefile 0.46 py37_0
opencv-python 4.1.1.26 pypi_0 pypi
openpyxl 2.6.2 py_0
openssl 1.1.1c he774522_1
...
我终于尝试了conda remove opencv-python,但它说找不到包?!
(base) C:\Users\triton>conda remove opencv-python
Collecting package metadata (repodata.json): done
Solving environment: failed
PackagesNotFoundError: The following packages are missing from the target environment:
- opencv-python
我想通过this 方法执行干净的opencv3 安装,但不知道是否会有一些库冲突或什么的。我对这里发生的事情感到非常困惑,并且想在尝试进一步改变我的发行版之前获得建议。如果我需要完全重新安装 Anaconda,这不是世界末日,但我想我会分享这些问题,以防其他人遇到它们!
如何确保完全删除所有 opencv pip 文件,而无需重新安装 Anaconda?
提前感谢您的帮助!
【问题讨论】:
-
创建一个虚拟环境并根据需要使用 conda 或 pip 安装。如果它不起作用,你可以删除那个环境。
-
进入环境,只需搜索您要禁用的模块,当它出现时,取消选中所需模块并单击“应用”以禁用。
-
"CypherX" 评论不能解决问题,我不想在我的基本环境中留下文件。我没有尝试“Dylan Freeman”的建议,但已经完成了 anaconda 的全新安装。但是,使用环境是很好的建议,我可能会在与我的基本环境分开的环境中使用带有 opencv 的旧版 python。