【问题标题】:virtual environment's architecture made by pipenv become intel chip on apple mac m1pipenv制作的虚拟环境架构成为苹果mac m1上的intel芯片
【发布时间】:2021-10-28 05:58:45
【问题描述】:

我在 mac m1 上使用 python 时遇到了困难,我发现pipenv 存在一个问题,无法使用正确的架构创建虚拟环境。如上图所示,当我用aram64架构打开终端,使用pipenv做虚拟环境时,架构变成了i386。我不确定这是否会导致大问题,它阻止了我使用一些 3rd 方包,例如 numpypandas,尽管我未能重现该错误。 (我记得,它显示了类似mach-o: but wrong architecture 的错误消息。)我使用的pipenv 的版本是2021.5.29。

> arch
arm64

> pipenv --python 3.8
Creating a virtualenv for this project...
Pipfile: /Users/seewoolee/development/tmp/Pipfile
Using /usr/bin/python3 (3.8.9) to create virtualenv...
⠦ Creating virtual environment...created virtual environment CPython3.8.9.final.0-64 in 388ms
  creator CPython3macOsFramework(dest=/Users/seewoolee/.local/share/virtualenvs/tmp-miv_sugU, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/seewoolee/Library/Application Support/virtualenv)
    added seed packages: pip==21.2.4, setuptools==58.1.0, wheel==0.37.0
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

✔ Successfully created virtual environment!
Virtualenv location: /Users/seewoolee/.local/share/virtualenvs/tmp-miv_sugU
Creating a Pipfile for this project...

> pipenv shell

Launching subshell in virtual environment...
. /Users/seewoolee/.local/share/virtualenvs/tmp-miv_sugU/bin/activate

> arch
i386

【问题讨论】:

  • pipenv 可执行文件本身的架构是什么? file 会告诉你吗?如果是英特尔,我相信 pipenv 将在 Rosetta 2 下运行,因此它看到的拱门是英特尔。它会尝试安装 intel pythons。如果您从 intel mac 迁移(例如),则可能会发生这种情况。或者如果您已经有一个 py 3.8 intel 版本并进行了迁移?

标签: python virtualenv apple-m1


【解决方案1】:

我认为 M1 芯片没有得到 pipenv/python 包的良好支持,可能这可以帮助您安装 panda 包,也可以作为其他包的方法示例:

https://megah-f.medium.com/apple-m1-python-pandas-and-pipenv-1cab199287c4

【讨论】:

    【解决方案2】:

    如果您从 intel mac 迁移到 m1,则已安装的可执行文件(例如 pipenv 或 python 3.8.9 安装)可以满足已安装的 intel 可执行文件。

    如果您没有迁移,请记住,作为 intel 安装的任何安装程序(brew、pip、pipenv 或 VS Code)都将在 Rosetta 2 下运行,其中拱门将是 intel。他们尝试安装的任何东西也都是英特尔。因此,请确保您的安装程序是您想要的架构(intel 或 arm)。在某些情况下,您可能需要两者并通过 PATH 设置选择其中一个。

    也就是说,请注意旧版本的 python 或模块可能不适用于 M1。如果较旧的源 Makefile 不知道如何处理 arm 拱门,则尝试从源安装的安装程序可能会失败。

    【讨论】:

      猜你喜欢
      • 2021-08-11
      • 2022-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 2022-11-29
      • 2021-10-19
      • 2022-10-25
      相关资源
      最近更新 更多