安装nnpy出现错误以及解决

今天在安装P4C的时候,参考了这篇博客
P4语言环境安装-前端编译器p4c、后端编译器p4c-bm2-ss、交换模型bmv2、Tutorial-张华Guido

在进行到这一步时,出现了错误

#安装python-pip
sudo apt install python-pip
#我是安装在/home/guido(user_name)/路径下
git clone https://github.com/nanomsg/nnpy
#进入nnpy文件夹
cd /home/guido/nnpy
#安装nnpy
pip install nnpy	

在这里插入图片描述
属于SSL Retry错误,CERTIFICATE ERROR,参考了这篇博客-----完美解决 Could not find a version that satisfies the requirement 安装包名字 (from versions: )–戴国进
的做法,将最后一句改为

pip install nnpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

这样做之后,结果仍然出现错误

ERROR: Command errored out with exit status 1:
     command: /usr/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-8xDyxr/nnpy/setup.py'"'"'; __file__='"'"'/tmp/pip-install-8xDyxr/nnpy/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-3btyVq
         cwd: /tmp/pip-install-8xDyxr/nnpy/
    Complete output (25 lines):
    Download error on https://pypi.python.org/simple/cffi/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) -- Some packages may not be found!
    Couldn't find index page for 'cffi' (maybe misspelled?)
    Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727) -- Some packages may not be found!
    No local packages or working download links found for cffi>=1.0.0
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-8xDyxr/nnpy/setup.py", line 28, in <module>
        install_requires=['cffi'],
      File "/usr/lib/python2.7/dist-packages/setuptools/__init__.py", line 128, in setup
        _install_setup_requires(attrs)
      File "/usr/lib/python2.7/dist-packages/setuptools/__init__.py", line 123, in _install_setup_requires
        dist.fetch_build_eggs(dist.setup_requires)
      File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 513, in fetch_build_eggs
        replace_conflicting=True,
      File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 774, in resolve
        replace_conflicting=replace_conflicting
      File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1057, in best_match
        return self.obtain(req, installer)
      File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1069, in obtain
        return installer(requirement)
      File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 580, in fetch_build_egg
        return cmd.easy_install(req)
      File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 692, in easy_install
        raise DistutilsError(msg)
    distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('cffi>=1.0.0')
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

然后暂时放在一边不管了。。。。。

之后在安装p4c的这一步make check时,
在这里插入图片描述
一些例子make check不过

The following tests FAILED:
	 63 - ebpf-bcc/testdata/p4_16_samples/action_call_ebpf.p4 (Failed)
	 64 - ebpf-bcc/testdata/p4_16_samples/action_call_table_ebpf.p4 (Failed)
	 65 - ebpf-bcc/testdata/p4_16_samples/bool_ebpf.p4 (Failed)
	 66 - ebpf-bcc/testdata/p4_16_samples/count_add_ebpf.p4 (Failed)
	 67 - ebpf-bcc/testdata/p4_16_samples/count_ebpf.p4 (Failed)
	 68 - ebpf-bcc/testdata/p4_16_samples/hit_ebpf.p4 (Failed)
	 69 - ebpf-bcc/testdata/p4_16_samples/init_ebpf.p4 (Failed)
	 70 - ebpf-bcc/testdata/p4_16_samples/issue2791_ebpf.p4 (Failed)
	 71 - ebpf-bcc/testdata/p4_16_samples/issue2793_ebpf.p4 (Failed)
	 72 - ebpf-bcc/testdata/p4_16_samples/issue2797_ebpf.p4 (Failed)
	 73 - ebpf-bcc/testdata/p4_16_samples/issue870_ebpf.p4 (Failed)
	 74 - ebpf-bcc/testdata/p4_16_samples/key-issue-1020_ebpf.p4 (Failed)
	 75 - ebpf-bcc/testdata/p4_16_samples/key_ebpf.p4 (Failed)
	 76 - ebpf-bcc/testdata/p4_16_samples/lpm_ebpf.p4 (Failed)
	 77 - ebpf-bcc/testdata/p4_16_samples/stack_ebpf.p4 (Failed)
	 78 - ebpf-bcc/testdata/p4_16_samples/switch_ebpf.p4 (Failed)
	 79 - ebpf-bcc/testdata/p4_16_samples/test_ebpf.p4 (Failed)
	 80 - ebpf-bcc/testdata/p4_16_samples/two_ebpf.p4 (Failed)
	 81 - ebpf-bcc/testdata/p4_16_samples/valid_ebpf.p4 (Failed)
	 82 - ebpf/testdata/p4_16_samples/action_call_ebpf.p4 (Failed)
	 83 - ebpf/testdata/p4_16_samples/action_call_table_ebpf.p4 (Failed)
	 84 - ebpf/testdata/p4_16_samples/bool_ebpf.p4 (Failed)
	 85 - ebpf/testdata/p4_16_samples/count_add_ebpf.p4 (Failed)
	 86 - ebpf/testdata/p4_16_samples/count_ebpf.p4 (Failed)
	 87 - ebpf/testdata/p4_16_samples/hit_ebpf.p4 (Failed)
	 88 - ebpf/testdata/p4_16_samples/init_ebpf.p4 (Failed)
	 89 - ebpf/testdata/p4_16_samples/issue2791_ebpf.p4 (Failed)
	 90 - ebpf/testdata/p4_16_samples/issue2793_ebpf.p4 (Failed)
	 91 - ebpf/testdata/p4_16_samples/issue2797_ebpf.p4 (Failed)
	 92 - ebpf/testdata/p4_16_samples/issue870_ebpf.p4 (Failed)
	 93 - ebpf/testdata/p4_16_samples/key-issue-1020_ebpf.p4 (Failed)
	 94 - ebpf/testdata/p4_16_samples/key_ebpf.p4 (Failed)
	 96 - ebpf/testdata/p4_16_samples/stack_ebpf.p4 (Failed)
	 97 - ebpf/testdata/p4_16_samples/switch_ebpf.p4 (Failed)
	 98 - ebpf/testdata/p4_16_samples/test_ebpf.p4 (Failed)
	 99 - ebpf/testdata/p4_16_samples/two_ebpf.p4 (Failed)
	100 - ebpf/testdata/p4_16_samples/valid_ebpf.p4 (Failed)
	101 - ebpf/testdata/p4_16_samples/ebpf_checksum_extern.p4 (Failed)
	103 - ubpf/testdata/p4_16_samples/action_call_ubpf.p4 (Failed)
	104 - ubpf/testdata/p4_16_samples/action_fwd_ubpf.p4 (Failed)
	105 - ubpf/testdata/p4_16_samples/advance_ubpf.p4 (Failed)
	106 - ubpf/testdata/p4_16_samples/csum_ubpf.p4 (Failed)
	107 - ubpf/testdata/p4_16_samples/default_action_ubpf.p4 (Failed)
	108 - ubpf/testdata/p4_16_samples/hash_ubpf.p4 (Failed)
	109 - ubpf/testdata/p4_16_samples/ipv4-actions_ubpf.p4 (Failed)
	110 - ubpf/testdata/p4_16_samples/ipv6-actions_ubpf.p4 (Failed)
	111 - ubpf/testdata/p4_16_samples/lookahead_ubpf.p4 (Failed)
	112 - ubpf/testdata/p4_16_samples/lpm_ubpf.p4 (Failed)
	113 - ubpf/testdata/p4_16_samples/metadata_ubpf.p4 (Failed)
	114 - ubpf/testdata/p4_16_samples/parenthesis-test_ubpf.p4 (Failed)
	115 - ubpf/testdata/p4_16_samples/simple-actions_ubpf.p4 (Failed)
	116 - ubpf/testdata/p4_16_samples/simple-firewall_ubpf.p4 (Failed)
	117 - ubpf/testdata/p4_16_samples/truncate_ubpf.p4 (Failed)
	118 - ubpf/testdata/p4_16_samples/tunneling_ubpf.p4 (Failed)
	119 - ubpf/testdata/p4_16_samples/ubpf_hash_extern.p4 (Failed)
	120 - ubpf/testdata/p4_16_samples/ubpf_checksum_extern.p4 (Failed)

关于这个错误,参考了这篇文章中的说法:Ubuntu16.04中配置p4编程环境(二)–Chin
在这里插入图片描述

是由于依赖问题导致的make check错误

想了一下,将需要sudo apt install 的包都安了一遍,仍然没有变化,最后想到了之前pip install nnpy未通过的问题,所以接下来要解决这个nnpy的问题:
从帮助信息可以知道nnpy依赖的包是cffi,所以是不是cffi的错误呢?
我参考了这篇文章cffi python包版本不匹配时出错
升级了cffi包

pip install --upgrade cffi==1.14.6 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

在这里插入图片描述
然后再执行nnpy的安装

pip install nnpy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

这样之后,nnpy就安装好了

然后回到p4c的make check问题,重新执行,结果如下,问题解决了,果然是依赖的问题且问题应该出在nnpy的安装上
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我将为您提供一个简单的nanomsg的req/rep模式的服务器和客户端通信的demo,使用C语言编写服务器端和Python编写客户端。 首先,您需要安装nanomsg库。在CentOS上,您可以使用以下命令进行安装: ``` sudo yum install nanomsg-devel ``` 接下来,我们开始编写服务器端代码。 服务器端代码(server.c): ```c #include <stdio.h> #include <nanomsg/nn.h> #include <nanomsg/reqrep.h> #define SOCKET_ADDRESS "tcp://127.0.0.1:5555" // 定义服务器地址 int main() { int sock = nn_socket(AF_SP, NN_REP); // 创建socket if (sock < 0) { printf("Error creating socket: %s\n", nn_strerror(nn_errno())); return -1; } int bind_result = nn_bind(sock, SOCKET_ADDRESS); // 绑定socket if (bind_result < 0) { printf("Error binding socket: %s\n", nn_strerror(nn_errno())); nn_close(sock); return -1; } while (1) { char *buf = NULL; int bytes = nn_recv(sock, &buf, NN_MSG, 0); // 接收客户端消息 if (bytes < 0) { printf("Error receiving message: %s\n", nn_strerror(nn_errno())); nn_close(sock); return -1; } printf("Received message: %s\n", buf); char *response = "abc"; int send_result = nn_send(sock, response, strlen(response) + 1, 0); // 发送响应 if (send_result < 0) { printf("Error sending response: %s\n", nn_strerror(nn_errno())); nn_freemsg(buf); nn_close(sock); return -1; } nn_freemsg(buf); } nn_close(sock); // 关闭socket return 0; } ``` 代码解释: - `nn_socket(AF_SP, NN_REP)` 创建一个REP类型的socket,用于接收并回复客户端消息。 - `nn_bind(sock, SOCKET_ADDRESS)` 将socket绑定到指定的地址上。 - `nn_recv(sock, &buf, NN_MSG, 0)` 接收客户端的消息,将接收到的消息保存在buf中,并返回消息的长度。 - `nn_send(sock, response, strlen(response) + 1, 0)` 发送响应给客户端。 - `nn_close(sock)` 关闭socket。 接下来,我们编写Python客户端代码。 客户端代码(client.py): ```python import nnpy SOCKET_ADDRESS = "tcp://127.0.0.1:5555" # 定义服务器地址 def main(): sock = nnpy.Socket(nnpy.AF_SP, nnpy.REQ) # 创建socket sock.connect(SOCKET_ADDRESS) # 连接服务器 message = b"123" sock.send(message) # 发送消息 response = sock.recv() # 接收响应 print("Received response: %s" % response.decode()) sock.close() # 关闭socket if __name__ == "__main__": main() ``` 代码解释: - `nnpy.Socket(nnpy.AF_SP, nnpy.REQ)` 创建一个REQ类型的socket,用于发送请求给服务器。 - `sock.connect(SOCKET_ADDRESS)` 连接服务器。 - `sock.send(message)` 发送消息给服务器。 - `sock.recv()` 接收服务器的响应。 - `sock.close()` 关闭socket。 现在,您可以编译并运行服务器端代码,然后运行客户端代码,客户端将发送消息“123”给服务器,服务器将收到消息并回复“abc”,客户端将接收到响应并打印出来。 编译服务器端代码: ``` gcc -o server server.c -lnanomsg ``` 运行服务器端代码: ``` ./server ``` 运行客户端代码: ``` python client.py ``` 这样,您就成功地实现了一个使用nanomsg的req/rep模式的服务器和客户端通信的demo,客户端发送内容“123”,服务器回复“abc”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值