Tcl has one great big huge namespace. If look at two libraries from different developers, there is no guarantee or even any helpful mechanisms to prevent them from using the same name for some functions or global variables. Look at emacs-lisp, for example, where every use and definition of a function starts with some presumably word-unique string.
(1) it's a pain to key in these prefixes all the time, and (2) considering that these strings are usually only a few characters long, it is quite likely that they'll collide.
Python has several features to support highly reusable code such that code from developers who never collaborated can be safely combined into one program. There language support for breaking the namespace into modules, and there are some installation techniques for managing module names.
Also, Tcl code is interpreted multiple times during the execution of a program. There is no "intermediate form" of the code as there is in Python and Perl.