【发布时间】:2022-01-18 07:33:58
【问题描述】:
我使用的是 Ubuntu 20.04 桌面。我不记得我是否必须在这里手动安装python3-pip(必须在其他 Ubuntu 机器上安装),但我确实有系统:
$ apt-show-versions -r python3-pip
python3-pip:all/focal-updates 20.0.2-5ubuntu1.6 uptodate
...然后:
sudo -H pip3 install --upgrade pip
sudo -H pip3 install pip-tools pipdeptree
sudo -H pip3 install virtualenv
然后,尝试从我的主目录设置 virtualenv:
virtualenv venv_mpl
然后,我将以下内容放在 venv_mpl/requirements.in 中:
plotly
seaborn
scikit-learn
然后,我启用 virtualenv,并尝试安装包:
$ source venv_mpl/bin/activate
(venv_mpl) $ pip-compile venv_mpl/requirements.in
...
(venv_mpl) $ pip-sync venv_mpl/requirements.txt
Found existing installation: apturl 0.5.2
ERROR: Cannot uninstall 'apturl'. 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):
...
嗯,是的,我确实之前安装了 apturl:
$ apt-show-versions -r apt.*url
apturl:amd64/focal 0.5.2ubuntu19 uptodate
apturl-common:amd64/focal 0.5.2ubuntu19 uptodate
...不过话说回来,不应该是这样吗,如果我使用virtualenv,那么我就不会遇到这种问题了?至少,这是我从pip cannot uninstall <package>: "It is a distutils installed project" 得到的读数:
或者,根据您的需要,不使用您的系统 Python 和/或其全局环境,而是创建一个私有 Python 安装和/或环境可能会更有效率。这里有很多选项,包括
virtualenv...
那么,我能做些什么,让pip-compile 从上述requirements.in 收集的pip 包安装在virtualenv 中,如上所述创建?
编辑:如果我尝试删除系统apturl,它也会尝试删除一个关键的桌面组件,在本例中为ubuntu-mate-core:
$ sudo apt remove --dry-run apturl
[sudo] password for administrator:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
apturl ubuntu-mate-core
0 upgraded, 0 newly installed, 2 to remove and 21 not upgraded.
Remv ubuntu-mate-core [1.263]
Remv apturl [0.5.2ubuntu19]
【问题讨论】:
-
请don't
sudoforpipinstalls;如果您想确保使用正确的 Python,请使用/path/to/python -m pip。按照设计,安装运行来自setup.py的任意 Python 代码(对于使用它的包)。此外,您不必安装 pip;它应该随 Python 发行版一起提供。 -
谢谢,@KarlKnechtel - 我想我只有一个 Python3 (
/usr/bin/python3),据我所知,venv_mpl/bin/python3是指向那个的符号链接。我使用 sudo 的唯一原因是因为我想将那些pip软件包安装为“系统”软件包(类似于apt install python3-matplotlib本来的样子);到目前为止,我还没有找到比使用sudo更好的说明如何做到这一点?无论如何,我仍然不知道我应该做什么来让这个 virtualenv 填充所需的 pip 包并运行? -
一般建议是“不要将软件包安装为系统软件包;有一些工具可以轻松地将软件包自动安装到新的虚拟环境中”。
-
谢谢,@KarlKnechtel - 但这仍然不能解释我应该怎么做才能让它运行; “......有工具......” - 当然,哪些工具?说,我不做
sudo -H pip3 install virtualenv- 那我应该如何运行 virtualenv,所以我创建虚拟环境? -
虚拟环境创建由
venv标准库模块since 3.3提供。您再次不需要安装任何东西。
标签: python pip virtualenv