The issue stems from how you're trying to sum the variables. When you use sum([x for x in model.x]), Python is actually iterating over the indices of model.x, not the Pyomo variables themselves. This creates a list comprehension of indices, which doesn't resolve to a valid Pyomo constraint expression. In Pyomo, when you want to sum variables, you should use the explicit indexing or the sum() function with the actual variable references. Here are a few correct ways to define the constraint:
Explicit indexing (which you've already found works):
pythonCopymodel.Constraint2 = pyo.Constraint(expr=model.x[0] + model.x[1] >= 0)
Using sum() with explicit variable references:
pythonCopymodel.Constraint2 = pyo.Constraint(expr=sum(model.x[i] for i in model.x.keys()) >= 0)
Another alternative:
pythonCopymodel.Constraint2 = pyo.Constraint(expr=sum(model.x[i] for i in range(2)) >= 0)