Python 从动态文件导入所有(*)

Python 从动态文件导入所有(*),python,django,django-urls,python-import,import-module,Python,Django,Django Urls,Python Import,Import Module,我有一个包裹: urls/ __init__.py dev_urls.py prod_urls.py 这个url包位于应用程序api和我的主url.py中: ... url(r'^api/v1/', include('apps.api.urls')), ... # __init__.py from django.conf import settings name = settings.URLS_ENV + '_urls' 我知道如果我将此添加到URL.\uuuu i

我有一个包裹:

urls/
    __init__.py
    dev_urls.py
    prod_urls.py
这个
url
包位于应用程序
api
和我的主
url.py
中:

...
url(r'^api/v1/', include('apps.api.urls')),
...
# __init__.py
from django.conf import settings
name = settings.URLS_ENV + '_urls'
我知道如果我将此添加到
URL.\uuuu init\uuuuuuuuy.py
文件:

# __init__.py
from dev_urls import *
Django将以
apps.api.url
的形式运行,包括
dev_url.py

但我想通过在我的设置模块中添加一个变量来实现这一点:

# settings
URLS_ENV = 'dev'  # This could be 'prod'
然后在我的
URL中

...
url(r'^api/v1/', include('apps.api.urls')),
...
# __init__.py
from django.conf import settings
name = settings.URLS_ENV + '_urls'
现在,问题是:我怎样才能做这样的事情:

from <name> import *
来自导入的
*

这可能吗?

不,在不更改文件名的情况下,无法更改导入的名称,您可能想到的
\uuuu name\uuuu
属性由导入方式设置。您需要使用John建议的自定义导入()或修改包含的路径,如下所示

...
url(r'^api/v1/', include('apps.api.urls.' + settings.URLS_ENV + '_urls')),
..

不,在不更改文件名的情况下无法更改导入的名称,您可能想到的
\uuuu name\uuuu
属性是由您导入它的方式设置的。您需要使用John建议的自定义导入()或修改包含的路径,如下所示

...
url(r'^api/v1/', include('apps.api.urls.' + settings.URLS_ENV + '_urls')),
..
我找到了这个答案

这对我有用,这是在运行:

# urls.__init__.py

from django.conf import settings

mod = settings.URL_ENVIRONMENT + '_urls'
exec 'from %s import *' % mod
我找到了这个答案

这对我有用,这是在运行:

# urls.__init__.py

from django.conf import settings

mod = settings.URL_ENVIRONMENT + '_urls'
exec 'from %s import *' % mod

不完全是重复的,但可能有足够的信息来回答:@JohnColeman我已经读过这个答案了。感谢请注意,我想要的是使用
\uu init\uuuuuuuuuuuuuuuuuuuuupy
获得导入
apps.api.url.dev_url.py
作为
apps.api.url
的功能,这不完全是重复的,但可能有足够的信息来回答:@JohnColeman我已经阅读了这个答案。感谢请注意,我想要的是使用
\uu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuupy
apps.api.url.py
导入为
apps.api.url