【问题标题】:Mac OS X: unable to install easysnmp via pipMac OS X:无法通过 pip 安装 easysnmp
【发布时间】:2019-11-10 05:10:25
【问题描述】:

我正在尝试在 Mac OS 上通过 pip 安装 python easysnmp 包,但遇到以下问题

➜  ~ pip install easysnmp
Collecting easysnmp
  Using cached https://files.pythonhosted.org/packages/e0/6f/2fd5c9113a488c81aa95f9006744c6998878a80135010f87506638ba6d5c/easysnmp-0.2.5.tar.gz
Installing collected packages: easysnmp
  Running setup.py install for easysnmp ... error
    ERROR: Complete output from command /Users/luk/.pyenv/versions/3.6.5/bin/python3.6 -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/hz/xgmhyb9x6c907lm81h82g1tm3znyk3/T/pip-install-u6hwnvnm/easysnmp/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/hz/xgmhyb9x6c907lm81h82g1tm3znyk3/T/pip-record-wvtda6_o/install-record.txt --single-version-externally-managed --compile:
    ERROR: running install
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.14-x86_64-3.6
    creating build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/compat.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/variables.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/session.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/__init__.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/easy.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/utils.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/exceptions.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    copying easysnmp/helpers.py -> build/lib.macosx-10.14-x86_64-3.6/easysnmp
    running build_ext
    building 'easysnmp.interface' extension
    creating build/temp.macosx-10.14-x86_64-3.6
    creating build/temp.macosx-10.14-x86_64-3.6/easysnmp
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include -I/usr/local/opt/zlib/include -I/Users/vyah/.pyenv/versions/3.6.5/include/python3.6m -c easysnmp/interface.c -o build/temp.macosx-10.14-x86_64-3.6/easysnmp/interface.o -Wno-unused-function
    In file included from easysnmp/interface.c:46:
    easysnmp/simple_bitarray.h:116:29: warning: variable 'nbytes' is used uninitialized whenever 'for' loop exits because its condition is false [-Wsometimes-uninitialized]
                for (i = nbits; i > (nbits - remaining_bits); i--)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    easysnmp/simple_bitarray.h:122:27: note: uninitialized use occurs here
            memset(&ba[1], 0, nbytes);
                              ^~~~~~
    /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/secure/_string.h:76:33: note: expanded from macro 'memset'
                    __builtin___memset_chk (dest, __VA_ARGS__, __darwin_obsz0 (dest))
                                                  ^~~~~~~~~~~
    easysnmp/simple_bitarray.h:116:29: note: remove the condition if it is always true
                for (i = nbits; i > (nbits - remaining_bits); i--)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    easysnmp/simple_bitarray.h:98:22: note: initialize the variable 'nbytes' to silence this warning
            size_t nbytes;
                         ^
                          = 0
    easysnmp/interface.c:454:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
                    if (len > buf_len)
                        ~~~ ^ ~~~~~~~
    easysnmp/interface.c:1220:48: warning: comparison of integers of different signs: 'unsigned long' and 'long' [-Wsign-compare]
                            else if (last_errindex > (*response)->errindex)
                                     ~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~
    easysnmp/interface.c:2379:55: warning: comparison of integers of different signs: 'unsigned long' and 'int' [-Wsign-compare]
            if (snmp_version == 1 && DEFAULT_NUM_BAD_OIDS < varlist_len)
                                     ~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~
    easysnmp/interface.c:2853:44: warning: comparison of integers of different signs: 'size_t' (aka 'unsigned long') and 'int' [-Wsign-compare]
                        if ((vars->name_length < oid_arr_len[varlist_ind]) ||
                             ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
    easysnmp/interface.c:3584:48: warning: comparison of integers of different signs: 'size_t' (aka 'unsigned long') and 'int' [-Wsign-compare]
                            if ((vars->name_length < oid_arr_len[varlist_ind]) ||
                                 ~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
    easysnmp/interface.c:3889:28: warning: comparison of integers of different signs: 'Py_ssize_t' (aka 'long') and 'unsigned long' [-Wsign-compare]
                    if (tmplen >= sizeof(tmp_val_str))
                        ~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~
    7 warnings generated.
    clang -bundle -undefined dynamic_lookup -L/usr/local/opt/readline/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/openssl/lib -L/Users/luk/.pyenv/versions/3.6.5/lib -L/usr/local/opt/zlib/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/readline/lib -L/usr/local/opt/openssl/lib -L/Users/luk/.pyenv/versions/3.6.5/lib -L/usr/local/opt/zlib/lib -L/usr/local/opt/zlib/lib -I/usr/local/opt/zlib/include build/temp.macosx-10.14-x86_64-3.6/easysnmp/interface.o -lnetsnmp -lcrypto.35 -o build/lib.macosx-10.14-x86_64-3.6/easysnmp/interface.cpython-36m-darwin.so
    ld: library not found for -lcrypto.35
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    error: command 'clang' failed with exit status 1
    ----------------------------------------
ERROR: Command "/Users/luk/.pyenv/versions/3.6.5/bin/python3.6 -u -c 'import setuptools, tokenize;__file__='"'"'/private/var/folders/hz/xgmhyb9x6c907lm81h82g1tm3znyk3/T/pip-install-u6hwnvnm/easysnmp/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/hz/xgmhyb9x6c907lm81h82g1tm3znyk3/T/pip-record-wvtda6_o/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/hz/xgmhyb9x6c907lm81h82g1tm3znyk3/T/pip-install-u6hwnvnm/easysnmp/

我使用pyenvpython 3.6.5pip 19.1.1Mac OS Mojave 10.14.3。另外,我已经安装了net-snmp 5.8gcc 9.1依赖:

➜  ~ python -V
Python 3.6.5
➜  ~ pip -V
pip 19.1.1 from /3.6.5/lib/python3.6/site-packages/pip (python 3.6)
➜  ~ pyenv -v
pyenv 1.2.9
➜  ~ brew info net-snmp
net-snmp: stable 5.8 (bottled) [keg-only]
Implements SNMP v1, v2c, and v3, using IPv4 and IPv6
➜  ~ brew info gcc
gcc: stable 9.1.0 (bottled), HEAD

在通过apt-get install -y libsnmp-dev snmp libyaml-dev gcc 安装依赖项后,我在 Ubuntu 上成功安装了easysnmp,但还没有找到 Mac OS 的替代方案。我会很感激任何帮助,谢谢!

【问题讨论】:

    标签: python macos pip easysnmp


    【解决方案1】:

    我终于找到了解决方案,好像我的/usr/local/opt/openssl/lib 文件夹不包含libcrypto.35.dylib 库。幸运的是libcrypto.35.dylib 位于/usr/lib 文件夹中,因此将libcrypto.35.dylib 库放入/usr/local/opt/openssl/lib 文件夹中的解决方案非常明显。

    结果我通过

    创建了一个符号链接
    ➜ ln -s /usr/lib/libcrypto.35.dylib /usr/local/opt/openssl/lib/libcrypto.35.dylib
    

    只有这样我才能通过pip 安装easysnmp

    ➜ pip install easysnmp
    Collecting easysnmp
      Using cached https://files.pythonhosted.org/packages/e0/6f/2fd5c9113a488c81aa95f9006744c6998878a80135010f87506638ba6d5c/easysnmp-0.2.5.tar.gz
    Installing collected packages: easysnmp
      Running setup.py install for easysnmp ... done
    Successfully installed easysnmp-0.2.5
    

    【讨论】:

    • 创建链接不是 'ls' 而是 'ln'。
    • 谢谢,打错了,已更新
    猜你喜欢
    • 2016-07-06
    • 1970-01-01
    • 2017-07-19
    • 2014-05-30
    • 2015-07-09
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多