How to install Vyper using pyenv and Virtualenv on macOS
Note : Vyper is about to hit Beta soon. Things are likely to change
Initially, setting up Vyper (an experimental language, with python-like syntax, for writing smart contracts on ethereum) seemed as simple as following the instructions.
it wasn’t.
If you like to skip the details/troubleshooting, head over to TL;DR
pyenv
I’ve written about why I prefer pyenv earlier
I’m not sure whether my “misfortune” was due to pyenv, but it could be.
To top it off, I also used virtualenv
as suggested in the official docs. (I would have done that any way)
So it added to complications, and “simple” instructions did not work.
I had discussion on gitter about this issue, and one person had also faced problems. (But he wasn’t using virtualenv
)
Problems and Solutions
It seemed that missing requirements.txt
is the problem (and the in-progress documentation) Several dependencies are not clearly listed.
First I ran into the following error, but the solution is well documented.
build/temp.macosx-10.12-x86_64-3.6/_openssl.c:493:10: fatal error: 'openssl/opensslv.h' file not found
So I had to set the CFLAGS
and LDFLAGS
variable, as mentioned on the official instructions page.
While troubleshooting, I realized that dependencies are badly broken.
I manually installed py-evm
because it is listed in setup.py
This installed a whole lot of packages correctly which are required later.
e.g. Thistroubleshooting guide, asks to install a specific version of pypandoc
.
When I did that, I saw several errors of the nature packageA requires pakcageB, which is not installed.
Yet, at the end I saw Successfully installed pypandoc-1.4
That does not make sense.
pip install py-evm
I think installed whole lot of those missing packages correctly.
(Note: In my latest attempt to verify these instructions, make
worked after this)
Then I ran into error related to 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)
Essentially it was trying to download pytest-runner, so first I tried curl using that URL (minus #sha256..) it worked. It dumped binary on the console. So there was no error reaching and downloading the file. So I manually pip install pytest-runner==4.2 After which make worked. (make test still failing, because I’m getting same error, but for ethereum)
I think it may have been “one off” error, cause in later attempts, I did not face this issue.
TL;DR : Steps that worked
As mentioned in the official documentation I already had python 3.6 and gmp
installed via 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
Note : In the steps above, I’ve listed a specific versions of various packages I installed manually. Eventually, It was not required. So try without mentioning specific version at first. If that does not lead to success, maybe try specific version - which may differ depending on when you are reading this
Originally Published on my blog