gpt4 book ai didi

Python 库在数据流中不可见

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:22 25 4
gpt4 key购买 nike

(这不是我的 earlier question 的重复。我正在尝试使用 setup.py 的不同方法,这与使用 requirements.txt 的现有方法不同)

我的项目是这样设置的

.
├── __pycache__
├── eventstream-to-bigq-main.py
└── setup.py

setup.py文件看起来像这样

from setuptools import setup
from setuptools import find_packages

REQUIRED_PACKAGES = [
"protobuf3-to-dict==0.1.5",
"protobuf==3.11.2",
]

setup(
name="eventstream-to-bigq",
version="1.0",
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
)

最后我尝试像这样使用这两个库

from google.protobuf.json_format import MessageToDict
from protobuf_to_dict import protobuf_to_dict

def parse_proto(message):
try:
dictobj = MessageToDict(message)
logging.info("google lib", dictobj)
except Exception as e:
logging.info("google-lib failed")
logging.error(e)

try:
s = protobuf_to_dict(message)
logging.info("third party", s)
except Exception as e:
logging.info("protobuf-to-dict failed")
logging.error(e)

即使在此之后,我仍然收到以下错误

message: "name 'MessageToDict' is not defined"message: "name 'protobuf_to_dict' is not defined"

我在镜像启动时监视了日志,并且可以看到以下日志行

I 2020-01-31T01:28:22.446626952Z 2020/01/31 01:28:22   Building wheel for protobuf3-to-dict (setup.py): finished with status 'done'

I 2020-01-31T01:28:22.443982764Z 2020/01/31 01:28:22 Building wheel for protobuf3-to-dict (setup.py): started

我可以看到类似的日志行 protobuf以及。我在这里看到的唯一警告是 WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available.

即使完成所有这些安装,我的代码仍然失败

编辑:忘记提及我正在使用此命令运行它

python -m eventstream-to-bigq-main \
--input_topic "projects/project_name/topics/topic_name" \
--job_name "rawdata-to-bigq-2" \
--output "gs://bucketname/wordcount/outputs" \
--runner DataflowRunner \
--project "project_name" \
--region "us-central1" \
--temp_location "gs://bucketname/tmp/" \
--staging_location "gs://bucketname/staging" \
--setup_file ./setup.py \
--streaming True

最佳答案

protobuf 软件包已安装在 Dataflow Worker 上,您可以在 documentation 中查看。 。您需要安装的唯一软件包是 protobuf3-to-dict

首先在您的计算机上安装软件包:

pip3 install protobuf3-to-dict

然后,检查您的计算机上安装了哪些软件包:

pip freeze > requirements.txt

此命令创建一个 requirements.txt 文件,其中列出了计算机上安装的所有软件包。请编辑 requirements.txt 文件并仅保留从 PyPI 安装的软件包。删除所有与您的代码不相关的包。

因此,在您的情况下,requirements.txt 看起来像这样:

protobuf3-to-dict==0.1.5

使用以下命令行选项运行管道,该选项将使用文件将其他依赖项安装到远程工作人员上:

--requirements_file requirements.txt

我做了一些测试,错误消失了。我希望上述信息对您有用。

关于Python 库在数据流中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59996892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com