我正在尝试使用运行以下软件包的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
然后我使用以下方法连接到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
运行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)
解决此冲突的方法是什么?
答案 0 :(得分:3)
解决此冲突的方法是什么?
您可以尝试遵循使用最低认可版本的方法。分解:
snowflake-connector-python
程序包的依赖性似乎限制了它对boto3
库的使用,最多只能使用1.13.x
。boto3
1.14.x
的显式版本。boto3
API(通过共享代码段使用)似乎不涉及any 1.14.x specific changes or features。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