Arrary script wont create a a duplicate
try this:
import bpy
import math


def createcircle(object, number, radius, xOffset, yOffset, zOffset):
    origin = object.location
    
    for x in range(number):
        newObj = object.copy()
        bpy.context.scene.collection.objects.link(newObj)
        newObj.location = (origin.x + xOffset * x, origin.y + yOffset * x, origin.z + zOffset * x)
    
print(&quot;script started ---------&quot;)

radius = 6

createcircle(bpy.context.active_object, 10, radius, 2.1, 0, 0)

you created the cubes, but you created them in &quot;nirvana&quot;. You have to link them to a scene to &quot;see&quot; them. But you can see them...if you go in your outliner and...check orphan data.

buuuuuut....i think, you were looking for this:
import bpy
import math


def createcircle(object, number_of_objects, radius):
    origin = object.location
    angle = 2 * math.pi / number_of_objects
    for x in range(number_of_objects):
        newObj = object.copy()
        bpy.context.scene.collection.objects.link(newObj)
        newObj.location = (math.sin(angle*x)*radius, math.cos(angle*x)*radius, 0)
    
print(&quot;script started ---------&quot;)

radius = 6

createcircle(bpy.context.active_object, 10, radius)

result:
[2
and here is a video tutorial: https://youtu.be/k2lsdYBwocU
just in case you are interested ...