无法为 pythereum 安装 secp256k1?

Unable to install secp256k1 for pythereum?

我得到的错误如下。我已经通过以下方式安装了 pythereum 所需的依赖项:

brew install --force pkg-config libffi autoconf automake libtool openssl

我得到的回复是

Warning: pkg-config-0.29.1_2 already installed
Warning: libffi-3.0.13 already installed, it's just not linked.
Warning: autoconf-2.69 already installed
Warning: automake-1.15 already installed
Warning: libtool-2.4.6_1 already installed
Warning: openssl-1.0.2k already installed, it's just not linked.

然后我尝试 link 未 link 编辑的库:

(ENV) Madhavs-MacBook-Air:pyethereum madhavsharma$ brew unlink libffi && brew link --force libffi
Unlinking /usr/local/Cellar/libffi/3.0.13... 0 symlinks removed
Linking /usr/local/Cellar/libffi/3.0.13... 10 symlinks created

但是,当尝试 link openssl 时,我得到了这个

(ENV) Madhavs-MacBook-Air:pyethereum madhavsharma$ brew unlink openssl && brew link --force openssl
Unlinking /usr/local/Cellar/openssl/1.0.2k... 0 symlinks removed
Warning: Refusing to link: openssl
Linking keg-only openssl means you may end up linking against the insecure,
deprecated system OpenSSL while using the headers from Homebrew's openssl.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

我不完全确定我应该如何解释这条消息,我也不确定为什么会出现下载错误,正如我在下面粘贴的那样。任何关于安装 pythereum 的一般指导将不胜感激。

(ENV) My-computer:pyethereum user$ pip3 install -r requirements.txt 
Collecting https://github.com/ethereum/ethash/tarball/master (from -r requirements.txt (line 9))
  Downloading https://github.com/ethereum/ethash/tarball/master (76kB)
    100% |████████████████████████████████| 81kB 540kB/s 
Collecting bitcoin (from -r requirements.txt (line 1))
  Using cached bitcoin-1.1.42.tar.gz
Collecting pysha3 (from -r requirements.txt (line 2))
  Using cached pysha3-1.0.2.tar.gz
Collecting PyYAML (from -r requirements.txt (line 3))
  Using cached PyYAML-3.12.tar.gz
Collecting repoze.lru (from -r requirements.txt (line 4))
  Using cached repoze.lru-0.6.tar.gz
Collecting pbkdf2 (from -r requirements.txt (line 5))
  Using cached pbkdf2-1.3.tar.gz
Collecting pycryptodome>=3.3.1 (from -r requirements.txt (line 6))
  Using cached pycryptodome-3.4.5.tar.gz
Collecting scrypt (from -r requirements.txt (line 7))
  Using cached scrypt-0.8.0.tar.gz
Collecting rlp>=0.4.4 (from -r requirements.txt (line 8))
  Using cached rlp-0.4.7.tar.gz
Collecting secp256k1 (from -r requirements.txt (line 10))
  Using cached secp256k1-0.13.2.tar.gz
    Complete output from command python setup.py egg_info:
    0.29.1
    Download error on https://pypi.python.org/simple/pytest-runner/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) -- Some packages may not be found!
    Couldn't find index page for 'pytest-runner' (maybe misspelled?)
    Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) -- Some packages may not be found!
    No local packages or working download links found for pytest-runner==2.6.2
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/c7/m5bh8s6d7nn1prj5x4dk6lp00000gn/T/pip-build-s_ta8_h3/secp256k1/setup.py", line 295, in <module>
        "Topic :: Security :: Cryptography"
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/core.py", line 108, in setup
        _setup_distribution = dist = klass(attrs)
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/setuptools/dist.py", line 315, in __init__
        self.fetch_build_eggs(attrs['setup_requires'])
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/setuptools/dist.py", line 361, in fetch_build_eggs
        replace_conflicting=True,
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/pkg_resources/__init__.py", line 850, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1122, in best_match
        return self.obtain(req, installer)
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1134, in obtain
        return installer(requirement)
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/setuptools/dist.py", line 429, in fetch_build_egg
        return cmd.easy_install(req)
      File "/Users/madhavsharma/Desktop/pyethereum/ENV/lib/python3.6/site-packages/setuptools/command/easy_install.py", line 659, in easy_install
        raise DistutilsError(msg)
    distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('pytest-runner==2.6.2')

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/c7/m5bh8s6d7nn1prj5x4dk6lp00000gn/T/pip-build-s_ta8_h3/secp256k1/

我有点不确定你为什么要使用 --force 进行 linking,但首先尝试没有强制标志的所有方法。

其次,我认为您可以忽略 linker 警告,因为 openssl 已经可用,因此 brew 没有 link 其他已安装的版本。

最后,你的最后一个问题是因为缺少证书,pip不知道如何处理。解决方法是使用 --index-url 忽略 https 并将 http url 作为参数传递,然后将其设置为 --trusted-host 源,即

pip3 install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org -r requirements.txt

我希望这能帮助你完成这个过程。