【问题标题】:Do executables like pip.exe require python to work?像 pip.exe 这样的可执行文件是否需要 python 才能工作?
【发布时间】:2020-07-28 07:15:27
【问题描述】:

我对 Python 比较陌生,所以请原谅我的无知。我想知道以下问题的答案

  1. pip 如何知道它安装的软件包的安装位置?经过反复试验 我怀疑它可能在安装时进行了硬编码。
  2. 像 pip.exe 这样的可执行文件是他们所谓的冻结二进制文件吗?本质上,这是否意味着 pip.exe 将在没有 python 的情况下运行。再次经过反复试验后,我怀疑它需要安装 python 才能执行。

P.S:我知道 sys.prefix、sys.executable 和 sys.exec_prefix。如果我问的问题还取决于其他任何东西,请将我链接到相同的内容。

【问题讨论】:

  • "pip.exe" 只是一个小存根,用于从“PythonXX.dll”(XX 表示 Python 版本号)加载实际解释器并使用它从标准库运行 pip Python 代码。
  • 并且找到此 python.dll 的路径必须在 pip.exe 中硬编码,对吗?因为当我用虚拟环境的 pip.exe 替换 python 附带的 pip.exe 时,我创建的它显示错误“无法在虚拟环境的路径上找到 python”(我在替换默认 pip 后删除了创建的虚拟环境虚拟环境的)点。

标签: python pip python-packaging pythoninterpreter


【解决方案1】:

pip.exe 位于 path\Scripts 下,需要安装 python,没有它就无法运行。它与特定的 python 解释器硬连线,不能为另一个解释器安装包。如果你的系统上安装了 7 个不同的 python 版本,你也会有 7 个不同版本的pip

由于绑定得如此紧密,pip 在某些时候甚至包含在 python 标准库中(有关详细信息,请参阅pep-0453)。

这也回答了您问题的另一部分,即pip 如何确定正确的位置 - 它只能安装到一个位置,即捆绑它的 python 解释器的侧包。

【讨论】:

  • 非常感谢你的朋友...这正是我想要的:)
  • 源代码可能是学习这类东西的最后手段 =D 好吧,python 文档总体上都很好,所以可以在那里学到很多东西。打包方面,我参考了python的打包权威文档(简称琵琶:pip.pypa.io/en/stable/user_guide),其他的东西大多是用过python一段时间才学会的。
  • stackoverflow 上也有a python chat room 可以访问学习东西,那里的用户维护一个good tutorials list
  • @user83335 我不太清楚,我很少在windows下开发,所以对那里的细节不熟悉。我继续接受它,因为它似乎回答了你的部分问题。
  • 公平......让它成为......如果将来有人使用 Windows 知道它并看到我们可以希望他会指出我是否误解了
【解决方案2】:

PIP 是 Python 包或模块的包管理器。

pip 与 virtualenv 一起使用时,通常会将包安装在路径 /lib//site-packages 中。

例如我创建了一个名为test的测试virtualenv,django文件夹在test/lib/python3.7/site-packages/django。

在安装的时候,你肯定已经设置了环境变量,pip就是这样识别目录的。

【讨论】:

  • 它是作为可执行进程独立运行还是仍然需要系统的python?
  • 是的,它确实需要 python 空闲。它只是一个经理,就像在 Anaconda 中我们有 conda。
  • 欢迎。如果它真的对你有帮助,你可以为答案投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 2013-04-11
相关资源
最近更新 更多