Рубрики
Без рубрики

Как установить Vyper с помощью pyenv и Virtualenv на mac OS

Настроить Vyper на Mac OS было не так просто, как следовать инструкциям.

Автор оригинала: Mandar Vaze.

Примечание: Vyper скоро выйдет в бета-версию. Все может измениться

Изначально настройка Vyper (экспериментального языка с синтаксисом, похожим на python, для написания смарт-контрактов на ethereum) казалась такой же простой, как следование инструкциям .

но это было не так.

Если вы хотите пропустить детали/устранение неполадок, перейдите к TL;DR

pyenv

Я уже писал о том, почему я предпочитаю pyenv ранее

Я не уверен, было ли мое “несчастье” связано с пьянвом, но это могло быть.

В довершение всего я также использовал virtualenv , как это было предложено в официальных документах. (Я бы сделал это в любом случае)

Так что это добавило осложнений, и “простые” инструкции не сработали.

Я обсуждал этот вопрос с гиттером, и один человек тоже столкнулся с проблемами. (Но он не использовал virtualenv )

Проблемы и решения

Казалось, что пропал requirements.txt проблема заключается в том, что (и в текущей документации) несколько зависимостей четко не перечислены.

Сначала я столкнулся со следующей ошибкой, но решение хорошо документировано.

build/temp.macosx-10.12-x86_64-3.6/_openssl.c:493:10: fatal error: 'openssl/opensslv.h' file not found

Поэтому мне пришлось установить переменные CFLAGS и LDFLAGS , как указано на странице официальных инструкций.

При устранении неполадок я понял, что зависимости сильно нарушены.

Я вручную установил py-evm потому что он указан в setup.py

Это правильно установило целую кучу пакетов , которые потребуются позже.

например, Это руководство по устранению неполадок просит установить определенную версию pypandoc .

Когда я это сделал, то увидел несколько ошибок типа package requires package B, который не установлен. Тем не менее, в конце я увидел Успешно установленный pypandoc-1.4

В этом нет никакого смысла.

pip install py-evm Я думаю, что установил все эти отсутствующие пакеты правильно.

( Примечание: В моей последней попытке проверить эти инструкции make работал после этого )

Затем я столкнулся с ошибкой, связанной с pytest-runner

distutils.errors.DistutilsError: Download error for https://files.pythonhosted.org/packages/9e/b7/fe6e8f87f9a756fd06722216f1b6698ccba4d269eac6329d9f0c441d0f93/pytest-runner-4.2.tar.gz#sha256=d23f117be39919f00dd91bffeb4f15e031ec797501b717a245e377aee0f577be: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:748)

По сути, он пытался загрузить pytest-runner, поэтому сначала я попробовал curl, используя этот URL-адрес (минус #sha256..), и это сработало. Он сбросил двоичный файл на консоль. Таким образом, не было никаких ошибок при поиске и загрузке файла. Поэтому я вручную устанавливаю pip.2 После чего make сработал. (сделать тест все еще не удается, потому что я получаю ту же ошибку, но для ethereum)

Я думаю, что это, возможно, была “одноразовая” ошибка, потому что в более поздних попытках я не сталкивался с этой проблемой.

TL;DR: Шаги, которые сработали

Как уже упоминалось в официальной документации У меня уже был python 3.6 и gmp установленный через brew

pyenv virtualenv 3.6.2 py362vyper
pip install --upgrade pip
export CFLAGS="-I$(brew --prefix openssl)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib"
pip install scrypt
pip install py-evm==0.2.0a12
pip install pytest-runner==4.2
git clone https://github.com/ethereum/vyper.git
cd vyper
make
pip install ethereum==2.3.1
pip install pytest-cov==2.5.1
make test
vyper examples/crowdfund.v.py

Примечание: В приведенных выше шагах я перечислил конкретные версии различных пакетов, которые я установил вручную. В конце концов, этого и не требовалось. Поэтому попробуйте сначала не упоминать конкретную версию. Если это не приведет к успеху, возможно, попробуйте конкретную версию – которая может отличаться в зависимости от того, когда вы читаете это

Первоначально опубликовано на моем сайте блог