使用 S3 boto3 和雪花连接器时的 ContextualVersionConflict

Eli*_*red 1 pip amazon-s3 python-3.x boto3 snowflake-cloud-data-platform

boto3我正在尝试使用snowflake-connector-python以下包连接到 Amazon S3 :

boto3==1.14.8
botocore==1.17.8
snowflake-connector-python==2.2.7
snowflake-sqlalchemy==1.2.3
Run Code Online (Sandbox Code Playgroud)

我通过以下方式创建 s3 连接:

import boto3
import pandas as pd
import io

def retrieveCSV():
    session = boto3.Session(
        aws_access_key_id = [ACCESSKEY],
        aws_secret_access_key = [SECRETKEY],
        )

    s3 = session.resource('s3')
    obj = s3.Object('mybucket','MyData.csv')
    body = obj.get()['Body'].read()
    dfCSV = pd.read_csv(io.BytesIO(body),header=2)
    print(dfCSV)

    return dfCSV
Run Code Online (Sandbox Code Playgroud)

我使用以下方式连接到 Snowflake:

from sqlalchemy import create_engine

def createEngine(schema):
    strConn = 'snowflake://{user}:{password}@{account}/{database}/{schema}'.format(
                        user = [MYUSER],
                        password = [MYPASSWORD],
                        account = [MYSERVER],
                        database = [MYDATABASE],
                        schema = [MYSCHEMA]
                        )
    print(strConn)

    engine = create_engine(strConn)

    return engine
Run Code Online (Sandbox Code Playgroud)

运行时会出现以下错误create_engine

raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.ContextualVersionConflict: (boto3 1.14.8(/home/ubuntu/.local/lib/python3.6/site-packages), Requirement.parse('boto3<1.14,>=1.4.4'), {'snowflake-connector-python'})
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方式升级:

pip3 install --upgrade snowflake-connector-python
Run Code Online (Sandbox Code Playgroud)

SegFault

Installing collected packages: urllib3, six, python-dateutil, docutils, jmespath, botocore, s3transfer, boto3, pycparser, cffi, cryptography, idna, certifi, chardet, requests, azure-core, oauthlib, requests-oauthlib, isodate, msrest, azure-storage-blob, pyjwt, asn1crypto, pytz, oscrypto, pycryptodomex, pyOpenSSL, azure-common, ijson, snowflake-connector-python
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

解决这个冲突的方法是什么?

小智 5

解决这个冲突的方法是什么?

您可以尝试遵循使用最低的合适版本的路径。分解它:

  • snowflake-connector-python依赖关系似乎最多限制其对boto3库的使用。1.13.x
  • 您的要求指定了 的显式版本boto3 1.14.x
  • 您对简单boto3API 的使用(通过共享的代码片段)似乎不涉及任何 1.14.x 特定的更改或功能
  • boto3 1.13.x版本继续针对实时 AWS S3 服务运行。

因此,请尝试使用可接受的boto3 / botocore版本来代替当前版本:

boto3==1.13
botocore==1.16
snowflake-connector-python==2.2.7
snowflake-sqlalchemy==1.2.3
Run Code Online (Sandbox Code Playgroud)