windows下python2.7安装grpc
2016-07-13 16:01
393 查看
公司有个项目需要在windows环境下,使用python2.7的grpc!
在网上没看见任何有用的信息!只能自己弄,还好,公司大牛宁工,已经帮我做了很多工作了!!
现在就如正题:grpc可以在git上下载下来。不过这个“vsprojects” 需要用自己vs打开 需要编译出来Release的库
,“Release”文件夹中最重要的一个文件"grpc_dll.dll",后面编译python的grpc时需要用的
打开cmd
你可以看见grpc根目录有个setup.py,看见这个就说明
4000
可以直接用“python setup.py build”
但是你执行上面命令之前需要,需要安装依赖的第三方包,就在requirements.txt,里面
直接执行“pip install -r requirements.txt”就自动安装了!!
当你执行python setup.py build,会出错!
提示
pip install -rrequirements.txt
GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install
第一个好理解,我们都做过了
第二个就是需要设置一下环境变量 “set GRPC_PYTHON_BUILD_WITH_CYTHON=1”
在执行 python setup.py build ,发现报错!!
提示说看见其中错误“not found stdbool.h” ,最后提示“Microsoft Visual C++ 9.0 is required”!
“Microsoft Visual C++ 9.0 is required” 这个就是需要依赖vs2008才能编译,但是我试了,还是会报错“not found stdbool.h"
最后我发现,”stdbool.h“只有vs2015才有,所以,我就把 vs2008的环境变量”VS90COMNTOOLS“ 的值,改成了 vs2015的路径”C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\“
然后然后,在重新打开cmd,
grpc根目录下执行 "python setup.py build",发现没问题
接着”python setup.py install“, 成功了!!
我高兴死了,进入python,
import grpc 你会发现报错 "_windows/grpc_c.60.python"
但是这个时候你去python的Lib->site-packages下面是没有grpc这个package的!
其实grpc的包是里另一种egg的形式存在的就是这个文件”grpcio-0.16.0.dev0-py2.7-win32.egg”
你可以把egg改成zip,就看建了里面有个grpc的文件夹,考出来,放到site-packages下面,把“grpcio-0.16.0.dev0-py2.7-win32.egg”删
退出python
再重新进入python ,
>> import grpc,还是报错
根据报错提示我找到了在源码下面”cygrpc.pyx“这个文件,发现这段代码
if 'win32' in sys.platform:
filename = pkg_resources.resource_filename(
'grpc._cython', '_windows/grpc_c.64.python')
if not isinstance(filename, bytes):
filename = filename.encode()
if not pygrpc_load_core(filename): raise ImportError('failed to load core gRPC library')
这个意思你没有grpc_c.64.python这个文件,这个文件什么?
最后大神宁工,说是release编译出来的grpc_dll.dll,只不过要重命名一下就行了!!
要在上面拷贝出来的grpc的目录下面找_cython文件夹,在这个文件夹下新建"_windows"目录,将grpc_dll.dll拷贝过来,重命名grpc_c.64.python,
退出python,重新进入python
>>import grpc 如果你的python是64位的,则import成功,如果你的python是32位的,就会报错'failed to load core gRPC library',
这个是因为如果你的python是32位的,grpc,加载的会是grpc_c.32.python,所以,你只需要把“grpc_c.64.python”重命名成“grpc_c.32.python”就行了;
这是因为
pygrpc_load_core()函数中会检测一下你的python,如果是32位的会自动替换64为32,所以为报错
以上就是全部问题。
重新进入python
>>import grpc
>>
成功了
在网上没看见任何有用的信息!只能自己弄,还好,公司大牛宁工,已经帮我做了很多工作了!!
现在就如正题:grpc可以在git上下载下来。不过这个“vsprojects” 需要用自己vs打开 需要编译出来Release的库
,“Release”文件夹中最重要的一个文件"grpc_dll.dll",后面编译python的grpc时需要用的
打开cmd
你可以看见grpc根目录有个setup.py,看见这个就说明
4000
可以直接用“python setup.py build”
但是你执行上面命令之前需要,需要安装依赖的第三方包,就在requirements.txt,里面
直接执行“pip install -r requirements.txt”就自动安装了!!
当你执行python setup.py build,会出错!
提示
pip install -rrequirements.txt
GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install
第一个好理解,我们都做过了
第二个就是需要设置一下环境变量 “set GRPC_PYTHON_BUILD_WITH_CYTHON=1”
在执行 python setup.py build ,发现报错!!
提示说看见其中错误“not found stdbool.h” ,最后提示“Microsoft Visual C++ 9.0 is required”!
“Microsoft Visual C++ 9.0 is required” 这个就是需要依赖vs2008才能编译,但是我试了,还是会报错“not found stdbool.h"
最后我发现,”stdbool.h“只有vs2015才有,所以,我就把 vs2008的环境变量”VS90COMNTOOLS“ 的值,改成了 vs2015的路径”C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\“
然后然后,在重新打开cmd,
grpc根目录下执行 "python setup.py build",发现没问题
接着”python setup.py install“, 成功了!!
我高兴死了,进入python,
import grpc 你会发现报错 "_windows/grpc_c.60.python"
但是这个时候你去python的Lib->site-packages下面是没有grpc这个package的!
其实grpc的包是里另一种egg的形式存在的就是这个文件”grpcio-0.16.0.dev0-py2.7-win32.egg”
你可以把egg改成zip,就看建了里面有个grpc的文件夹,考出来,放到site-packages下面,把“grpcio-0.16.0.dev0-py2.7-win32.egg”删
退出python
再重新进入python ,
>> import grpc,还是报错
根据报错提示我找到了在源码下面”cygrpc.pyx“这个文件,发现这段代码
if 'win32' in sys.platform:
filename = pkg_resources.resource_filename(
'grpc._cython', '_windows/grpc_c.64.python')
if not isinstance(filename, bytes):
filename = filename.encode()
if not pygrpc_load_core(filename): raise ImportError('failed to load core gRPC library')
这个意思你没有grpc_c.64.python这个文件,这个文件什么?
最后大神宁工,说是release编译出来的grpc_dll.dll,只不过要重命名一下就行了!!
要在上面拷贝出来的grpc的目录下面找_cython文件夹,在这个文件夹下新建"_windows"目录,将grpc_dll.dll拷贝过来,重命名grpc_c.64.python,
退出python,重新进入python
>>import grpc 如果你的python是64位的,则import成功,如果你的python是32位的,就会报错'failed to load core gRPC library',
这个是因为如果你的python是32位的,grpc,加载的会是grpc_c.32.python,所以,你只需要把“grpc_c.64.python”重命名成“grpc_c.32.python”就行了;
这是因为
if not pygrpc_load_core(filename): raise ImportError('failed to load core gRPC library')
pygrpc_load_core()函数中会检测一下你的python,如果是32位的会自动替换64为32,所以为报错
int pygrpc_load_core(char *path) { HMODULE grpc_c; #ifdef GPR_ARCH_32 /* Close your eyes for a moment, it'll all be over soon. */ char *six = strrchr(path, '6'); *six++ = '3'; *six = '2'; #endif grpc_c = LoadLibraryA(path); if (grpc_c) { pygrpc_load_imports(grpc_c); return 1; } return 0; }
以上就是全部问题。
重新进入python
>>import grpc
>>
成功了
相关文章推荐
- python 如何优雅地退出子进程
- python 如何优雅地退出子进程
- python调用java编写的Webservice
- 廖雪峰python学习笔记10&&11:容错处理与文件读写
- Python字符串的内置方法
- Python列表的内置方法
- Python——使用__future__遇见的坑
- Python之集合的用法
- python学习笔记之module && package
- Python 字符编码判断
- python实现 Excel 转为json
- python 读文件 写文件 字符串操作 LIBSVM格式数据转换
- Python字典的内置方法
- Python 抓图
- python 重新执行循环中出错的那一次
- python 文件操作
- python的requests初步使用
- Python 开发环境
- python 文件操作
- python笔记---OS模块内建方法