该问题出现在 Stack Overflow 上,但是它太特定于 Unix/Ubuntu 了。
我的问题(请参阅下面我之前的帖子)是我无法让 pip(或者更准确地说是 pip3)加载或工作。APT get pip3-python(或在线帮助告诉您执行的任何操作)永远找不到该包。我正在使用 virtauenv,经过大量工作后,我发现我的 lib/..../site-packages/(distros)/pip.py 位于名为 python2.7 或 python3.5 的“distro”文件夹站点 URL 下。通过跟踪到最后,我能够在 venv 处于活动状态时看到这一点。
我认为,在使用 apt install 为 2.7 版引导 pip 之后,“旧” Pip 可以正常运行。
但是对于 python3,我从未成功过。由于我没有 pip,我无法使用 pip 进行升级。相反,我尝试了 APT,但 APT 找不到(或无法加载)pip 的 pip3 版本。我甚至使用 curl 从源加载 pip3 的副本并使用 curl 将其“强制放入”/..../site-packages/python3.5 文件夹,但没有可以访问它的 CLI 命令(它实际上失败了,因为它无法加载所需的可执行文件或模块。例如,经过大量工作后,我在说“pip3”后收到此错误消息:
Traceback (most recent call last):
File "/home/lee/Unix/quantilla-harden/q7root/bin/pip3", line 7, in <module>
from pip._internal.cli.main import main
ModuleNotFoundError: No module named 'pip'
正如我所说,我自己的侦查发现我的个人路径中有一个旧版本的 pip ...~/.../site-packages/python2.7/pip(以及其他包)
但是.../site-packages/python3.6 中没有并行文件。
如果它有价值,这就是我让虚拟环境工作的方式:
- 使用 makedir 创建一个名为 fixpipenv 的目录
- 移至该目录
- 做了“virtualenv”。(这似乎在使用创建的下面引入了一个“fixpipenv”
-
this command, i.e., there are stacked "fixpipenv"ls directories.)
-
checked; there is now a '/bin' in the (lower) fixpipenv directory
-
typed . bin/activate My CLI prompt has now switched to the "fixpipenv" notification we are in a virtual environment
现在 pip 开始发挥作用,但是适用于“旧”Python 的版本如下:
(fixpipenv)me@me-HP-Pavilion-Notebook:~/fixpipenv/fixpipenv$ pip list 弃用:Python 2.7 于 1 月终止其生命周期
2020 年 1 月 1 日。请升级您的 Python,因为 Python 2.7 不再维护。pip 21.0 将于 2021 年 1 月放弃对 Python 2.7 的支持。有关 pip 中 Python 2 支持的更多详细信息,请访问 https://pip.pypa.io/en/latest/development/release-process/#python-2-support 软件包版本
当我尝试 pip3 时,它看起来像这样:
回溯(最近一次调用):文件“/home/lee/Unix/quantilla-harden/q7root/bin/pip3”,第 7 行,来自 pip._internal.cli.main 导入 main ModuleNotFoundError:没有名为“pip”的模块
回溯(最近一次调用):文件“/home/lee/Unix/quantilla-harden/q7root/bin/pip3”,第 7 行,来自 pip._internal.cli.main 导入 main ModuleNotFoundError:没有名为“pip”的模块
我自己通过 sluicing 发现我的个人路径中有一个旧版本的 pip ...~/.../site-packages/python2.7/pip(以及其他包)
.../site-packages/python3.6 中没有并行文件。
再次,我为重复更新道歉,但到目前为止还没有人找到解决方案,所以我在查看并尝试解决问题的每一步之后,不断对其进行编辑以找到最可能的问题。顶部(此处)的问题让每个人都关注现实;底部显示了迄今为止的所有历史记录:
先前的问题:Unix 如何找到每个命令的可执行文件?根据我所做的一些调查,我推测它只是按顺序遍历 $PATH,寻找具有相同名称的可执行文件。换句话说,如果您输入“grep”,它会转换树形 $PATH 来查找名为“grep.py”的可执行文件(grep 是用 Python 编写的),如果失败,则报告失败。但是,还有其他方法吗?例如,每个命令是否与隐藏文件中的“导出”相关联,该文件将每个可执行文件映射到创建别名的可执行文件标记文件,类似于 grep=/.../bin/grep.py 我在升级到 Ubuntu 18 的计算机上让 pip 工作时遇到了麻烦,我试图弄清楚为什么我的系统再也找不到 pip,即使我将文件复制到看起来像 Unix 上的逻辑路径中,其中包含大量 CLI 可执行文件。另外,我不能只将 pip 的实际文件保存在我的 $PATH 目录中,或者为这些东西添加一个新位置并更改我的 $PATH(在 virtualenv 环境之下)以使其工作吗?**