Trial Division Prime Generator
The function generate_primes() shouldn’t print the list it generated.  The caller should print the returned value, if desired. 



Calling generate_primes(2) will unexpectedly return [2, 3], as will generate_primes(1) or generate_primes(-500).



The increment_2 flag is awkward.  When True, increment by 2 seems ok, but when False the increment is ... what?  0?  1?  

Instead of an increment_2 flag, you could use an increment amount, starting with 2 ...

increment = 2


... and then toggle that value between 2 &amp; 4:

num += increment

# Alternate step size between 2 and 4
increment = 6 - increment


No more if ... else ..., reducing the complexity of the function slightly. 



Stretch goal:

After generate_primes(200), if a call is made to generate_primes(500), you will recalculate all of the primes beneath 200.  Perhaps there is a way to cache the computed values for future generate calls?