如果使用-t选项,PIP如何知道Python是32位还是64位?

时间:2019-12-10 16:27:12

标签: python pip

您可以使用标志指定Python版本(pip install --python-version 3.6 ...),但似乎无法指定是要安装32位还是64位模块。我有一些理论,但是在这一点上我不清楚它的行为。

更具体地说,我想使用PIP.exe使用-t标志指定位置在嵌入式Python区域(没有自己的PIP.exe)中安装模块。

更新:情况似乎是32位Pip安装到32位Python,而64位Pip安装到64位Python。

2 个答案:

答案 0 :(得分:1)

  

您可以使用标志指定Python版本,

您不能。 -t的选项pip install设置目标目录,而不是Python版本。

  

但是您似乎无法指定要安装32位还是64位模块。

pip是一个Python脚本,它在Python解释器下运行,并且解释器当然知道它是32位还是64位。

  

更具体地说,我想使用PIP.exe在嵌入式Python区域中安装模块

您可以下载软件包以用于不同的(不同于当前的Python / pip)硬件平台,操作系统和Python版本,但是您不能安装。要安装软件包,您必须具有兼容的pip。因此,第一件事是为所述嵌入式Python安装pip

答案 1 :(得分:0)

如果您正在尝试使用本地pip从PyPI提取软件包并将其转储到CircuitPython设备等类似设备的文件夹中,则可以尝试以下操作:

pip install \
      --no-compile \
      --target /your/path \
      --python-version=3.5 \
      --implementation=py \
      --no-binary=:all: \
      --no-deps \
      adafruit-circuitpython-bmp280

这会将源(模块或包)转储到/your/path中。 --python-version仅使用包中的标记,而实际上不检查源。 --implementation=py将强制其使用纯Python包


较旧的答案,但对某些情况有用

  

您可以使用标志指定Python版本。

您能澄清一下吗?您是在谈论运行python3.5还是python3.8之类的东西吗?那就是Python二进制文件的名称。

您可能还使用Windows,其中you can include -32 or -64 as a suffix指向shebang行中的可执行文件。该行由py PEP-397 launcher处理。


为消除混淆,best practice不应运行pip install ...,而应运行python -m pip install ...。然后,您可以放心pippython用于同一安装(版本,虚拟环境等)

例如,如果我安装了Python 2.7,Python 3.5和Python 3.8,则我的路径上可能会有以下“明确”的二进制文件

  • python2
  • python2.7
  • python3.5
  • python3.8

但是,还有

  • python
  • python3
  • pip
  • pip3

这些实际指向的是任何人的猜测,并且可能取决于安装顺序,安装方式以及任何手动路径操作。在某些设置中,pip可能会安装到(例如)Python 3.5版本,而python是Python 2.7。如果是这样,如果您运行pip install requests,那么python -c "import requests"将会失败。

要在Windows上将其绑定到the launcher,运行py -3.7-32 myscript.py会使用32位版本的python 3.7(如果存在)运行脚本。如果您需要为其安装软件包,请使用py -3.7-32 -m pip install ...来确保已安装该软件包,而不要使用pip install ...来知道谁在哪里。