|
import os
|
|
import sysconfig
|
|
import filecmp
|
|
import shutil
|
|
|
|
def sync_bits_and_bytes_files():
|
|
"""
|
|
Check for "different" bitsandbytes Files and copy only if necessary.
|
|
This function is specific for Windows OS.
|
|
"""
|
|
|
|
|
|
if os.name != "nt":
|
|
print("This function is only applicable to Windows OS.")
|
|
return
|
|
|
|
try:
|
|
|
|
source_dir = os.path.join(os.getcwd(), "bitsandbytes_windows")
|
|
|
|
dest_dir_base = os.path.join(sysconfig.get_paths()["purelib"], "bitsandbytes")
|
|
|
|
|
|
filecmp.clear_cache()
|
|
|
|
|
|
for file in os.listdir(source_dir):
|
|
source_file_path = os.path.join(source_dir, file)
|
|
|
|
|
|
if file in ("main.py", "paths.py"):
|
|
dest_dir = os.path.join(dest_dir_base, "cuda_setup")
|
|
else:
|
|
dest_dir = dest_dir_base
|
|
|
|
|
|
print(f'Copy {source_file_path} to {dest_dir}')
|
|
shutil.copy2(source_file_path, dest_dir)
|
|
|
|
except FileNotFoundError as fnf_error:
|
|
print(f"File not found error: {fnf_error}")
|
|
except PermissionError as perm_error:
|
|
print(f"Permission error: {perm_error}")
|
|
except Exception as e:
|
|
print(f"An unexpected error occurred: {e}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sync_bits_and_bytes_files() |