mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Summary: Hello, This is a little patch to fix `DeprecationWarning: invalid escape sequence`. Pull Request resolved: https://github.com/pytorch/pytorch/pull/15733 Differential Revision: D13587291 Pulled By: soumith fbshipit-source-id: ce68db2de92ca7eaa42f78ca5ae6fbc1d4d90e05
99 lines
3.1 KiB
Python
99 lines
3.1 KiB
Python
## @package diagnose_protobuf
|
|
# Module scripts.diagnose_protobuf
|
|
"""Diagnoses the current protobuf situation.
|
|
|
|
Protocol buffer needs to be properly installed for Caffe2 to work, and
|
|
sometimes it is rather tricky. Specifically, we will need to have a
|
|
consistent version between C++ and python simultaneously. This is a
|
|
convenience script for one to quickly check if this is so on one's local
|
|
machine.
|
|
|
|
Usage:
|
|
[set your environmental variables like PATH and PYTHONPATH]
|
|
python scripts/diagnose_protobuf.py
|
|
"""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
import os
|
|
import re
|
|
from subprocess import Popen, PIPE
|
|
|
|
# Get python protobuf version.
|
|
try:
|
|
import google.protobuf
|
|
python_version = google.protobuf.__version__
|
|
python_protobuf_installed = True
|
|
except ImportError:
|
|
print("DEBUG: cannot find python protobuf install.")
|
|
python_protobuf_installed = False
|
|
|
|
if os.name == 'nt':
|
|
protoc_name = 'protoc.exe'
|
|
else:
|
|
protoc_name = 'protoc'
|
|
|
|
try:
|
|
p = Popen([protoc_name, '--version'], stdout=PIPE, stderr=PIPE)
|
|
out, err = p.communicate()
|
|
except:
|
|
print('DEBUG: did not find protoc binary.')
|
|
print('DEBUG: out: ' + out)
|
|
print('DEBUG: err: ' + err)
|
|
native_protobuf_installed = False
|
|
else:
|
|
if p.returncode:
|
|
print('DEBUG: protoc returned a non-zero return code.')
|
|
print('DEBUG: out: ' + out)
|
|
print('DEBUG: err: ' + err)
|
|
native_protobuf_installed = False
|
|
else:
|
|
tmp = re.search(r'\d\.\d\.\d', out)
|
|
if tmp:
|
|
native_version = tmp.group(0)
|
|
native_protobuf_installed = True
|
|
else:
|
|
print('DEBUG: cannot parse protoc version string.')
|
|
print('DEBUG: out: ' + out)
|
|
native_protobuf_installed = False
|
|
|
|
PYTHON_PROTOBUF_NOT_INSTALLED = """
|
|
You have not installed python protobuf. Protobuf is needed to run caffe2. You
|
|
can install protobuf via pip or conda (if you are using anaconda python).
|
|
"""
|
|
|
|
NATIVE_PROTOBUF_NOT_INSTALLED = """
|
|
You have not installed the protoc binary. Protoc is needed to compile Caffe2
|
|
protobuf source files. Depending on the platform you are on, you can install
|
|
protobuf via:
|
|
(1) Mac: using homebrew and do brew install protobuf.
|
|
(2) Linux: use apt and do apt-get install libprotobuf-dev
|
|
(3) Windows: install from source, or from the releases here:
|
|
https://github.com/google/protobuf/releases/
|
|
"""
|
|
|
|
VERSION_MISMATCH = """
|
|
Your python protobuf is of version {py_ver} but your native protoc version is of
|
|
version {native_ver}. This will cause the installation to produce incompatible
|
|
protobuf files. This is bad in general - consider installing the same version.
|
|
""".format(py_ver=python_version, native_ver=native_version)
|
|
|
|
# Now, give actual recommendations
|
|
if not python_protobuf_installed:
|
|
print(PYTHON_PROTOBUF_NOT_INSTALLED)
|
|
|
|
if not native_protobuf_installed:
|
|
print(NATIVE_PROTOBUF_NOT_INSTALLED)
|
|
|
|
if python_protobuf_installed and native_protobuf_installed:
|
|
if python_version != native_version:
|
|
print(VERSION_MISMATCH)
|
|
else:
|
|
print('All looks good.')
|
|
|
|
|
|
|
|
|