It should be "is" because "three weeks" is viewed as a single period of time, not as three individual things. Similarly for "A thousand dollars is a lot of money", "Ten miles is a long way", etc.
New words, one handy idiom, and a 2-minute quiz — delivered to your inbox to keep your streak alive.