Spaces:
Runtime error
Runtime error
| import os | |
| import shutil | |
| import subprocess | |
| import sys | |
| import tarfile | |
| import urllib.request | |
| def download_blender(url, destination): | |
| urllib.request.urlretrieve(url, destination) | |
| def extract_archive(archive_file, destination): | |
| with tarfile.open(archive_file, 'r:xz') as tar: | |
| tar.extractall(destination) | |
| def remove_file(file_path): | |
| os.remove(file_path) | |
| def move_folder(source, destination): | |
| shutil.move(source, destination) | |
| def create_symbolic_link(source, target): | |
| os.symlink(source, target) | |
| def install_packages(packages): | |
| subprocess.run(['sudo', 'apt-get', 'update']) | |
| subprocess.run(['sudo', 'apt-get', 'install'] + packages + ['-y']) | |
| def main(): | |
| blender_url = 'https://download.blender.org/release/Blender4.0/blender-4.0.2-linux-x64.tar.xz' | |
| archive_file = 'blender-4.0.2-linux-x64.tar.xz' | |
| extracted_folder = 'blender-4.0.2-linux-x64' | |
| destination_folder = '/opt/blender-4.0.2' | |
| symbolic_link = '/usr/local/bin/blender' | |
| packages_to_install = ['libxxf86vm1', 'libgl1-mesa-glx', 'libegl-mesa0', 'libegl1'] | |
| # Download Blender | |
| print("Downloading Blender...") | |
| download_blender(blender_url, archive_file) | |
| # Extract the downloaded archive | |
| print("Extracting Blender archive...") | |
| extract_archive(archive_file, '.') | |
| # Remove the downloaded archive | |
| print("Removing downloaded archive...") | |
| remove_file(archive_file) | |
| # Move the extracted folder to the desired location | |
| print("Moving Blender folder...") | |
| move_folder(extracted_folder, destination_folder) | |
| # Create a symbolic link to the Blender executable | |
| print("Creating symbolic link to Blender executable...") | |
| create_symbolic_link(os.path.join(destination_folder, 'blender'), symbolic_link) | |
| # Install required packages | |
| print("Installing required packages...") | |
| install_packages(packages_to_install) | |
| print("Installation complete.") | |
| if __name__ == "__main__": | |
| main() | |