Debian 11에서 virtualenv를 제거할 수 없습니다

Debian 11에서 virtualenv를 제거할 수 없습니다

내 데비안 운영 체제는 여러 번 업그레이드되어 현재 버전 11(Bullseye)입니다. 원래는 그것으로 시작했는데 python2이제는 더 이상 원하지 않습니다. 그냥 그렇습니다 python3.virtualenv오래전에 설치해서 아직도 사용하고 있었습니다 python2.

나는 완전한 작업을 수행했습니다 dist-upgrade.

$ sudo apt-get update
Hit:1 http://deb.debian.org/debian bullseye InRelease
Get:2 https://deb.nodesource.com/node_14.x bullseye InRelease [4,586 B]
Get:3 http://deb.debian.org/debian-security bullseye-security InRelease [48.4 kB]
Hit:4 http://deb.debian.org/debian bullseye-updates InRelease
Fetched 53.0 kB in 1s (49.9 kB/s)
Reading package lists... Done
$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  libts-dev
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

설치되어 있는지 확인해보니 virtualenv다음과 같습니다.

$ which virtualenv
/usr/local/bin/virtualenv

제거를 시도했지만 pip설치되지 않았다는 메시지가 나타납니다.

$ pip uninstall virtualenv
WARNING: Skipping virtualenv as it is not installed
$ sudo pip uninstall virtualenv
WARNING: Skipping virtualenv as it is not installed.
$ pip3 uninstall virtualenv
WARNING: Skipping virtualenv as it is not installed
$ sudo pip3 uninstall virtualenv
WARNING: Skipping virtualenv as it is not installed.

혹시나 이런 식으로 설치된 경우에는 패키지 관리자를 이용해 제거도 해보았습니다.

$ sudo apt-get remove virtualenv --purge
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package 'virtualenv' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

하지만 결국에는 여전히 설치된 것을 볼 수 있습니다.

$ which virtualenv
/usr/local/bin/virtualenv

제거하려는 이유는 실행하려고 할 때 오류가 발생하기 때문입니다. 완전히 제거하고 다시 설치하면 이 문제가 해결될까 생각 중입니다.

$ virtualenv .
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 7, in <module>
    from virtualenv import main
ModuleNotFoundError: No module named 'virtualenv'

삭제해야 하나요 /usr/local/bin/virtualenv? 이것은 나쁜 생각인 것 같습니다. 패키지 관리자를 사용하여 제거하는 방법은 무엇입니까 virtualenv?

업데이트 1 - 다음 virtualenv을 사용하여 설치를 시도했습니다.pip3

설치에 성공했지만 virtualenv여전히 실행할 수 없으며 오류가 보고되지 않습니다.

$ pip3 install virtualenv
Defaulting to user installation because normal site-packages is not writeable
Collecting virtualenv
  Using cached virtualenv-20.25.1-py3-none-any.whl.metadata (4.4 kB)
Requirement already satisfied: distlib<1,>=0.3.7 in ./.local/lib/python3.9/site-packages (from virtualenv) (0.3.8)
Requirement already satisfied: filelock<4,>=3.12.2 in ./.local/lib/python3.9/site-packages (from virtualenv) (3.13.3)
Requirement already satisfied: platformdirs<5,>=3.9.1 in ./.local/lib/python3.9/site-packages (from virtualenv) (4.2.0)
Using cached virtualenv-20.25.1-py3-none-any.whl (3.8 MB)
Installing collected packages: virtualenv
  WARNING: The script virtualenv is installed in '/home/me/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed virtualenv-20.25.1
$ which virtualenv
/usr/local/bin/virtualenv
$ virtualenv --version
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 7, in <module>
    from virtualenv import main
ImportError: cannot import name 'main' from 'virtualenv' (/home/me/.local/lib/python3.9/site-packages/virtualenv/__init__.py)
$ virtualenv .
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 7, in <module>
    from virtualenv import main
ImportError: cannot import name 'main' from 'virtualenv' (/home/me/.local/lib/python3.9/site-packages/virtualenv/__init__.py)

이제 virtualenv파일 시스템의 두 위치에 존재합니다.

$ which virtualenv
/usr/local/bin/virtualenv
$ sudo find /usr/ -iname "virtualenv" | grep bin
/usr/local/bin/virtualenv
$ sudo find /home/me/.local/ -iname "virtualenv" | grep bin
/home/me/.local/bin/virtualenv
$ ls -l /home/me/.local/bin/virtualenv 
-rwxr-xr-x 1 me me 238 Apr  7 13:06 /home/me/.local/bin/virtualenv

답변1

시스템 패키지 관리자는 이를 관리하지 않습니다 /usr/local.

제거 pip할 수 없으므로 지금 가장 좋은 옵션은 다음과 같습니다.virtualenv

sudo rm /usr/local/bin/virtualenv

다른 곳에 잔여물이 있을 수 있지만 /usr/local아무런 해를 끼치지 않습니다. 나중에 찾아볼 수 있습니다.

Debian 11에서는 packages virtualenv에서 사용할 수 있습니다 python3-virtualenv.

관련 정보