Google Cloud Dataflow(Python)-无法正确安装依赖项

时间:2018-08-16 06:57:34

标签: python google-cloud-platform google-cloud-dataflow apache-beam

我正在尝试在此处运行官方数据流示例:https://github.com/GoogleCloudPlatform/dataflow-prediction-example

但是,由于日志中存在以下类型的错误,数据流作业无法正确启动(其他作业也发生了相同的错误):

    (happens 2nd) Could not install packages due to an EnvironmentError: 
    [Errno 2] No such file or directory: '/usr/local/lib/python2.7/dist-packages/tensorflow-1.9.0.dist-info/METADATA' 
    (happens 1st) Successfully built tensorflow-module 

我完全按照Github上的指示进行操作,这是此示例中virtualenv的pip freeze的输出:

    absl-py==0.4.0
    apache-beam==2.6.0
    astor==0.7.1
    avro==1.8.2
    backports.weakref==1.0.post1
    cachetools==2.1.0
    certifi==2018.8.13
    chardet==3.0.4
    crcmod==1.7
    dill==0.2.8.2
    docopt==0.6.2
    enum34==1.1.6
    fasteners==0.14.1
    funcsigs==1.0.2
    future==0.16.0
    futures==3.2.0
    gapic-google-cloud-pubsub-v1==0.15.4
    gast==0.2.0
    google-apitools==0.5.20
    google-auth==1.5.1
    google-auth-httplib2==0.0.3
    google-cloud-bigquery==0.25.0
    google-cloud-core==0.25.0
    google-cloud-pubsub==0.26.0
    google-gax==0.15.16
    googleapis-common-protos==1.5.3
    googledatastore==7.0.1
    grpc-google-iam-v1==0.11.4
    grpcio==1.14.1
    hdfs==2.1.0
    httplib2==0.11.3
    idna==2.7
    Markdown==2.6.11
    mock==2.0.0
    monotonic==1.5
    numpy==1.14.5
    oauth2client==4.1.2
    pbr==4.2.0
    ply==3.8
    proto-google-cloud-datastore-v1==0.90.4
    proto-google-cloud-pubsub-v1==0.15.4
    protobuf==3.6.1
    pyasn1==0.4.4
    pyasn1-modules==0.2.2
    pydot==1.2.4
    pyparsing==2.2.0
    pytz==2018.4
    PyVCF==0.6.8
    PyYAML==3.13
    requests==2.19.1
    rsa==3.4.2
    six==1.11.0
    tensorboard==1.10.0
    tensorflow==1.10.0
    termcolor==1.1.0
    typing==3.6.4
    urllib3==1.23
    Werkzeug==0.14.1

这个pip依赖问题发生在我尝试过的所有其他工作上,所以我决定尝试使用正式的github示例,这也正在发生。

此工作ID为2018-08-15_23_42_57-394561747688459326,我使用的是 Python 2.7

感谢您的帮助以及任何指示!

2 个答案:

答案 0 :(得分:2)

如Apache Beam文档中有关如何handle Python dependencies in a pipeline所述,建议的PyPI依赖性方法是创建一个requirements.txt文件,然后将其作为可选的命令行选项传递,如下所示(您尝试此问题时可能是错误的):

--requirements_file requirements.txt

无论如何,正如我在有关如何run Apache Beam with TensorFlow的最新示例中所看到的,the code所做的实际上是根据 install_requires传递要安装的软件包列表setuptools中的em>选项,因此这也是您可以遵循的选项,我认为这可以解决您的问题。

答案 1 :(得分:0)

实际上,我通过删除requirements.txt文件并在setup.py文件中发布了我的应用程序正在使用的极少数附加库来解决此问题(丢弃了Dataflow中已提供的依赖项)工人-link)。

尽管如此,我不确定这是否是正确的解决方案,因为Github示例本身仅在我从pip install tensorflow文件中删除setup.py命令后才起作用。

希望这对某人有帮助! :)