title: module google.cloud has no attribute storage
body: <p>I'm trying to run a beam script in python on GCP following this tutorial:</p>
  <p>[https://levelup.gitconnected.com/scaling-scikit-learn-with-apache-beam-251eb6fcf75b][1]</p>
  <p>but I keep getting the following error:</p>
  <pre><code>AttributeError: module 'google.cloud' has no attribute 'storage'
  </code></pre>
  <p>I have google-cloud-storage in my requirements.txt so really not sure what I'm missing here.</p>
  <p>My full script:</p>
  <pre><code>import apache_beam as beam
  import json
  
  query = &quot;&quot;&quot;
      SELECT 
      year, 
      plurality, 
      apgar_5min, 
      mother_age, 
      father_age,
      gestation_weeks,
      ever_born,
      case when mother_married = true then 1 else 0 end as mother_married,
      weight_pounds as weight,
      current_timestamp as time,
      GENERATE_UUID() as guid
      FROM `bigquery-public-data.samples.natality` 
      order by rand()
      limit 100    
  &quot;&quot;&quot; 
  
  class ApplyDoFn(beam.DoFn):
      def __init__(self):
          self._model = None
          from google.cloud import storage
          import pandas as pd
          import pickle as pkl
          self._storage = storage
          self._pkl = pkl
          self._pd = pd
      
      def process(self, element):
          if self._model is None:
              bucket = self._storage.Client().get_bucket('bqr_dump')
              blob = bucket.get_blob('natality/sklearn-linear')
              self._model = self._pkl.loads(blob.download_as_string())
              
          new_x = self._pd.DataFrame.from_dict(element,
                                              orient='index').transpose().fillna(0)
          pred_weight = self._model.predict(new_x.iloc[:, 1:8])[0]
          return [ {'guid': element['guid'],
                   'predicted_weight': pred_weight,
                   'time': str(element['time'])}]
  
  
  
  # set up pipeline options
  options = {'project': my-project-name,
             'runner': 'DataflowRunner',
             'temp_location': 'gs://bqr_dump/tmp',
             'staging_location': 'gs://bqr_dump/tmp'
             }
  
  pipeline_options = beam.pipeline.PipelineOptions(flags=[], **options)
  
  with beam.Pipeline(options=pipeline_options) as pipeline:
      (
          pipeline
          | 'ReadTable' &gt;&gt; beam.io.Read(beam.io.BigQuerySource(
              query=query,
              use_standard_sql=True))
          | 'Apply Model' &gt;&gt; beam.ParDo(ApplyDoFn())
          | 'Save to BigQuery' &gt;&gt; beam.io.WriteToBigQuery(
              'pzn-pi-sto:beam_test.weight_preds', 
              schema='guid:STRING,weight:FLOAT64,time:STRING', 
              write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
              create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED))
  </code></pre>
  <p>and my requirements.txt:</p>
  <pre><code>google-cloud==0.34.0
  google-cloud-storage==1.30.0
  apache-beam[GCP]==2.20.0
  </code></pre>