2011-09-22 14 views
4

具有django應用程序的一部分的文件的完整路徑我想獲得一個Django應用程序的名稱。如何獲取該應用程序中的文件的Django應用程序名稱?

例如,對於這個路徑:

/lib/python2.6/site-packages/django/contrib/auth/tests/auth_backends.py 

應用程序名稱爲auth

我不知道這個Django應用程序名稱是如何以編程方式計算應用程序內的特定文件名的。

背景:我想集成從vim編輯器調用Django測試管理命令。它應該運行當前編輯文件所屬的應用程序的測試。

回答

2

您可以通過__import__獲得模塊的文件名。您可以使用__package__屬性獲取它的包名稱。然後,您可以檢查settings.INSTALLED_APPS中的哪個應用程序是軟件包名稱的子字符串。這是你的應用程序。

+0

不幸的是,與__import__給出的文件名不使用Python 2.6的工作。 (http://docs.python.org/whatsnew/2.6.html#porting-to-python-2-6) – bmihelac

+0

@bmihelac你是對的。改用[imp](http://docs.python.org/library/imp.html)模塊。 – DrTyrsa

+0

另外''__package__''是''django''而不是所期望的''auth'' – bmihelac

0

如果你有一個模塊中的類的實例,你可以嘗試:

instance._meta.app_label 
相關問題