If you want to copy blob across Azure storage account, please refer to the following code
from azure.storage.blob import ResourceTypes, AccountSasPermissions, generate_account_sas, BlobServiceClient
from datetime import datetime, timedelta
source_key = ''
des_key = ''
source_account_name = ''
des_account_name = '23storage23'
# genearte account sas token for source account
sas_token = generate_account_sas(account_name=source_account_name, account_key=source_key,
resource_types=ResourceTypes(
service=True, container=True, object=True),
permission=AccountSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(hours=1))
source_blob_service_client = BlobServiceClient(
account_url=f'https://{source_account_name}.blob.core.windows.net/', credential=source_key)
des_blob_service_client = BlobServiceClient(
account_url=f'https://{des_account_name}.blob.core.windows.net/', credential=des_key)
source_container_client = source_blob_service_client.get_container_client(
'copy')
source_blob = source_container_client.get_blob_client('Capture.PNG')
source_url = source_blob.url+'?'+sas_token
# copy
des_blob_service_client.get_blob_client(
'test', source_blob.blob_name).start_copy_from_url(source_url)
Besides, if the access level of the source container is public, we can simplify the code as below
from azure.storage.blob import BlobServiceClient
source_key = ''
des_key = ''
source_account_name = ''
des_account_name = '23storage23'
source_blob_service_client = BlobServiceClient(
account_url=f'https://{source_account_name}.blob.core.windows.net/', credential=source_key)
des_blob_service_client = BlobServiceClient(
account_url=f'https://{des_account_name}.blob.core.windows.net/', credential=des_key)
source_container_client = source_blob_service_client.get_container_client(
'input')
source_blob = source_container_client.get_blob_client('file.json')
source_url = source_blob.url
# copy
des_blob_service_client.get_blob_client(
'test', source_blob.blob_name).start_copy_from_url(source_url)
For more details, please refer to here
no module name .make_blob_url
and early on in the codecannot import name 'BlockBlobService'
– mas