Use Python to determine the repeating pattern in a string (no leftovers)
length = (len(s))


Unnecessary ( )’s.

 range_list = (range(1, len(s)+1))


Again, unnecessary ( )’s.  Does not actually create a list, just a range object, so a better name is in order.   And you can remove this entire statement (see below). 

 list_char = list(s)


You don’t need to create a list of characters to solve this problem.  (More later.)

 divisors = []


Unnecessary statement.  Made obsolete by very next statement:

 divisors = [x for x in range_list if (length)% (x) == 0]


Unnecessary ( )’s ... twice.  Could replace range_list with range(1, len(s)+1), and remove above range_list = .....

 max_pieces = []


Misleading and useless.  You store a single integer in this variable later, not a list. 

 for i in range (len(divisors)):
     size = divisors[i]


A more pythonic way would be:

 for size in divisors:


I might use divisor instead of size, when looping over a list of divisors. 

     split = [list_char[i:i+size] for i in range(0, length, size)]


Confusing.   i is already used in outer loop.  List comprehension’s i is (fortunately) a separate variable ... but give it a different name ... maybe j. 

Instead of list_char[i:i+size], you could simply use s[i:i+size].  This would return a substring instead of a sublist of characters, which would be just as effective. 

     if(all(x == split[0] for x in split)):


The if statement does not need the outer ( )’s.  

         max_pieces = int(length/size)


More pythonic would be max_pieces = length // size

         break
 return max_pieces


break could be replaced with just return max_pieces.  And the current return statement replaced with an error message or return 1 catch-all.