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