Python 导入错误:将apache_梁作为梁导入。找不到模块

Python 导入错误:将apache_梁作为梁导入。找不到模块,python,docker,pip,airflow,apache-beam,Python,Docker,Pip,Airflow,Apache Beam,我已经在Docker中安装了apache_beam Python SDK和apache Python SDK。 Python版本:3.5 Apache气流:1.10.5 我正在尝试使用**DataflowPythonOperator**执行apachebeam管道。 当我从airflow UI运行DAG时,我得到 导入错误:将apache_梁导入为梁。找不到模块 使用相同的设置,我尝试了**DataflowTemplateOperator**,效果非常好 当我在Python2和ApacheAir

我已经在Docker中安装了apache_beam Python SDK和apache Python SDK。 Python版本:3.5
Apache气流:1.10.5

我正在尝试使用
**DataflowPythonOperator**
执行apachebeam管道。 当我从airflow UI运行DAG时,我得到

导入错误:将apache_梁导入为梁。找不到模块

使用相同的设置,我尝试了
**DataflowTemplateOperator**
,效果非常好

当我在Python2和ApacheAirflow 1.10.3上尝试相同的docker设置时,两个月前,操作员没有返回任何错误,并且按照预期工作

SSH进入docker后,当我检查docker容器中已安装的库(使用pip冻结)时,我可以看到已安装的apache beam和apache airflow版本。 apache气流==1.10.5 apache beam==2.15.0

Dockerfile:

气流操作员:

这将帮助你解决你的问题。遵循以下步骤

  • 阅读下面关于virtualenv的精彩文章,这将在以后的步骤中有所帮助

  • 创建虚拟环境(注意,我在cloudml samples文件夹中创建了它&名为env)

    钛-vim-169612:~/cloudml样本$virtualenv

  • 激活虚拟环境

    @钛-vim-169612:~/cloudml样本$source env/bin/activate

  • 使用以下链接安装云数据流:(这将引入apache_beam)

  • 现在,您可以检查apache_beam是否存在于env/lib/python2.7/site-packages中/

    @titanium-vim-169612:~/cloudml样本/flowers$ls../env/lib/python2.7/site-packages/

  • 运行样本 在这一点上,我得到了一个关于缺少tensorflow的错误。我使用下面的链接在我的virtualenv中安装了tensorflow(使用virtualenv的安装步骤)


    该示例现在似乎正常工作。

    这似乎是一个已知问题:

    请运行pip install six==1.10。这是Beam()中的一个已知问题,我们正试图在上游解决它


    因此,请尝试使用
    pip
    安装
    six==1.10
    ,这可能不是您的选项,但我在使用python 2时遇到了相同的错误。用Python3执行相同的脚本解决了这个错误

    我正在浏览数据流教程:

    当我按照规定的说明操作时:

    python grep.py

    我从你文章的标题中得到了这个错误。我打了一拳:

    python3 grep.py 
    

    它的工作原理与预期一致。我希望有帮助。如果没有的话,我会很开心的。有关I运行的具体内容,请参阅链接

    你能分享完整的回溯吗?@lainShelvington这里是回溯:我会注意到,如果你只是在docker上运行一个应用程序,那么我会跳过virtualenv,不清楚为什么这会有帮助。你可以补充一些东西来解释为什么这会解决这个问题吗?在这些步骤中没有这样的东西,我只是提供了做同样事情的真相之源路径。我有同样的问题,不幸的是,这没有解决它。
    new_task = DataFlowPythonOperator(
     task_id='process_details',
     py_file="path/to/file/filename.py",
     gcp_conn_id='google_cloud_default',
     dataflow_default_options={
                 'project': 'xxxxx',
                 'runner': 'DataflowRunner',
                 'job_name': "process_details",
                 'temp_location': 'GCS/path/to/temp',
                 'staging_location': 'GCS/path/to/staging',
                 'input_bucket': 'bucket_name',
                 'input_path': 'GCS/path/to/bucket',
                 'input-files': 'GCS/path/to/file.csv'
         },
         dag=test_dag)
    
    https://www.tensorflow.org/install/install_linux#InstallingVirtualenv
    
    python3 grep.py