我正在尝试使用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
我通过以下方式创建 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
我使用以下方法连接到雪花:
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
这会导致运行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'})
我尝试通过以下方式升级:
pip3 install --upgrade snowflake-connector-python
以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)
解决这一冲突的方法是什么?
解决此冲突的方法是什么?
您可以尝试遵循使用最低宜人版本的路径。分解一下:
snowflake-connector-python
包依赖项似乎限制了它对boto3
库的使用最多1.13.x
。- 您的要求指定了
boto3
1.14.x
的显式版本。 - 您使用简单的
boto3
API(按共享的代码段(似乎不涉及任何特定于 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