This is a circular import. In general, they don't work.
See How can I have modules that mutually import each other? in the FAQ for an explanation, and some different ways to solve it. There's also a Circular Imports section on Fredrik Lundh's effbot site. But briefly:
A starts executing. A reaches the import B. B starts executing. B reaches the import A. Since A already exists, this does nothing. Whatever code in A wasn't run yet—like the definition for A.func2—still hasn't run. B tries to use A.func2, which hasn't been defined yet, so you get an error.
(Even more briefly, but less accurately: B depends on A, which depends on B, which means B can't run until B runs. This may help you get an intuitive understanding of the problem, which may help you understand the more complete/accurate explanation above.)
What you probably want to do is move the code in A that B needs into a separate module, which both A and B can import, which won't need to import either A or B. That's not the only possible solution (see the FAQ entry for two other ideas), but when it's possible to do this cleanly, it's hard to beat it. (Without actual code, it's hard to give a more specific answer than that.)
func2...