Похоже, что iconservice
пакет требует, чтобы libsecp256k
был установлен в вашей системе.
Building wheel for secp256k1 (setup.py) ... error
ERROR: ...
ERROR: 0.29.1
Using bundled libsecp256k1
...
Failed to build secp256k1
Для Linux, просто установите его сначала, следуя Настройка в Linux шаги:
$ sudo apt-get install libleveldb1 libleveldb-dev libsecp256k1-dev
$ pip install iconservice
Для Mac OS X требуется немного больше шагов:
# install leveldb
$ brew install pkg-config automake libtool leveldb
# install libsecp256k (from source)
# based on this (https://github.com/bitcoin-core/secp256k1#build-steps)
$ git clone https://github.com/bitcoin-core/secp256k1.git
$ cd secp256k1/
$ ./autogen.sh
$ ./configure
$ make
# install plyvel
# based on this (https://github.com/wbolster/plyvel/issues/66#issuecomment-460094085)
$ mv /Applications/XCode.app /Applications/Xcode_cp.app
$ leveldb_version=$(ls /usr/local/Cellar/leveldb/ | tail -1)
$ CFLAGS="-mmacosx-version-min=10.7 -stdlib=libc++" \
pip install plyvel \
--no-cache-dir \
--global-option=build_ext \
--global-option="-I/usr/local/Cellar/leveldb/${leveldb_version}/include/" \
--global-option="-L/usr/local/lib"
$ mv /Applications/XCode_cp.app /Applications/Xcode.app
$ pip freeze | grep plyvel
plyvel==1.1.0
# download icon-service source
$ git clone https://github.com/icon-project/icon-service.git
# edit the requirements.txt included with the icon-service source
# to update the plyvel version to match what's already installed
# on your machine (from the previous step)
$ cd icon-service
$ vim requirements.txt
$ cat requirements.txt
...
plyvel==1.1.0 <-- I updated this from 1.0.5
...
# build and install iconservice from wheels
$ ./build.sh
$ CFLAGS="-mmacosx-version-min=10.7 -stdlib=libc++" \
pip install dist/iconservice-1.3.0-py3-none-any.whl \
--no-cache-dir \
--global-option=build_ext \
--global-option="-I/usr/local/Cellar/leveldb/${leveldb_version}/include/" \
--global-option="-L/usr/local/lib"
Обратите внимание, что я установил iconservice
из источника, потому что pip install iconservice
по-прежнему не работает (я думаю, что колесо не построено должным образом для Mac OS X).Затем я также обновил версию plyvel
в файле needs.txt из источника iconservice
, поскольку при установке его с колеса ожидается версия 1.0.5, но у меня уже был уровень plyvel на уровне 1.1.0 (Я не знаю, повлияет ли это на поведение пакета ..).
Кстати, если вы уже используете виртуальную среду, вам не следует использовать sudo
больше с pip install
.Цель использования virtualenv состоит в том, чтобы не "испачкать" системные пакеты, если вы используете sudo
, это в некотором роде противоречит цели virtualenv.