архитектура виртуальной среды, созданная pipenv, стала чипом intel на Apple mac m1

#python #virtualenv #apple-m1

Вопрос:

введите описание изображения здесь

Я борюсь с использованием python на mac m1, и я обнаружил, что существует проблема с pipenv созданием виртуальной среды с правильной архитектурой. Как вы можете видеть на приведенном выше рисунке, когда я открываю терминал с архитектурой aram64 и создаю виртуальную среду с использованием pipenv , архитектура становится i386. Я не уверен, что это вызывает большую проблему , это заблокировало мне использование некоторых сторонних пакетов, таких как numpy и pandas , хотя мне не удалось воспроизвести ошибку. (Насколько я помню, на нем появилось сообщение об ошибке типа 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
 

Комментарии:

1. Какова архитектура самого исполняемого файла pipenv? file расскажет тебе? Если это intel, я считаю, что pipenv будет работать под управлением rosetta 2, и, следовательно, арка, которую он видит, — это intel. И он попытается установить intel pythons. Это может произойти, если вы перешли с компьютера Intel mac (например). Или если у вас уже была версия intel py 3.8 и вы перенесли ее?

Ответ №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.

Если вы не перенесли, имейте в виду, что любой установщик (brew, pip, pipenv или VS-код), установленный как intel, будет работать под управлением Rosetta 2, где arch будет intel. Все, что они попытаются установить, также будет intel. Поэтому убедитесь, что ваши установщики соответствуют нужной вам архитектуре (intel или arm). В некоторых ситуациях вам может понадобиться и то, и другое, и вы можете выбрать одно или другое с помощью настроек ПУТИ.

Тем не менее, имейте в виду, что более старые версии python или модулей могут быть недоступны для M1. Установщики, пытающиеся установить из исходного кода, могут потерпеть неудачу, если старые исходные файлы Makefile не знают, что делать с аркой arm.