{"id":540,"date":"2018-03-28T00:31:56","date_gmt":"2018-03-27T16:31:56","guid":{"rendered":"https:\/\/vinta.ws\/code\/?p=540"},"modified":"2026-03-17T00:42:14","modified_gmt":"2026-03-16T16:42:14","slug":"find-circular-imports-in-python","status":"publish","type":"post","link":"https:\/\/vinta.ws\/code\/find-circular-imports-in-python.html","title":{"rendered":"Find circular imports in Python"},"content":{"rendered":"<p>What are circular imports?<br \/>\n<a href=\"http:\/\/stackabuse.com\/python-circular-imports\/\">http:\/\/stackabuse.com\/python-circular-imports\/<\/a><\/p>\n<p>You could use <code>python -vv<\/code> to inspect import relations.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-py\">$ python -vv manage.py shell\n&gt;&gt;&gt; from api.models import Application\n&gt;&gt;&gt; from member.views.site import signup<\/code><\/pre>\n<p>or<\/p>\n<pre class=\"line-numbers\"><code class=\"language-py\">$ python -vv\n&gt;&gt;&gt; import os\n&gt;&gt;&gt; os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'streetvoice.settings')\n&gt;&gt;&gt; import django\n&gt;&gt;&gt; django.setup()\n&gt;&gt;&gt; from api.models import Application<\/code><\/pre>\n<p>ref:<br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/6351805\/cyclic-module-dependencies-and-relative-imports-in-python\">https:\/\/stackoverflow.com\/questions\/6351805\/cyclic-module-dependencies-and-relative-imports-in-python<\/a><br \/>\n<a href=\"https:\/\/stackoverflow.com\/questions\/9098787\/tool-for-pinpointing-circular-imports-in-python-django\">https:\/\/stackoverflow.com\/questions\/9098787\/tool-for-pinpointing-circular-imports-in-python-django<\/a><\/p>\n<p>Python 3.7 has a new feature to show time for importing modules. This feature is enabled with <code>-X importtime<\/code> option or <code>PYTHONPROFILEIMPORTTIME=1<\/code> environment variable.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-py\">$ python3.7 -X importtime -c \"import pipenv\"<\/code><\/pre>\n<p>ref:<br \/>\n<a href=\"https:\/\/dev.to\/methane\/how-to-speed-up-python-application-startup-time-nkf\">https:\/\/dev.to\/methane\/how-to-speed-up-python-application-startup-time-nkf<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You could use python -vv to inspect import relations.<\/p>\n","protected":false},"author":1,"featured_media":541,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[29,2],"class_list":["post-540","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-about-python","tag-debug","tag-python"],"_links":{"self":[{"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/posts\/540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/comments?post=540"}],"version-history":[{"count":0,"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/posts\/540\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/media\/541"}],"wp:attachment":[{"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/media?parent=540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/categories?post=540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vinta.ws\/code\/wp-json\/wp\/v2\/tags?post=540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}