我有以下脚本,它的意思是一个独立的Django脚本,所以我可以从命令行运行python my_script.py.它曾经与Django 1.8一起使用,在我升级到Django 1.11之后,我收到以下错误:
Traceback (most recent call last):
File "app.py", line 8, in <module>
django.setup()
File "C:\python27\lib\site-packages\django-1.11.5-py2.7.egg\django\__init__.py", line 22, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "C:\python27\lib\site-packages\django-1.11.5-py2.7.egg\django\conf\__init__.py", line 56, in __getattr__
self._setup(name)
File "C:\python27\lib\site-packages\django-1.11.5-py2.7.egg\django\conf\__init__.py", line 41, in _setup
self._wrapped = Settings(settings_module)
File "C:\python27\lib\site-packages\django-1.11.5-py2.7.egg\django\conf\__init__.py", line 110, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "C:\python27\lib\importlib\__init__.py", line 37, in import_module
__import__(name)
ImportError: Import by filename is not supported.
Run Code Online (Sandbox Code Playgroud)
这是我的python脚本
# standalone django setup
import os, sys, logging, django
prj_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
logging.basicConfig(level=logging.INFO)
logging.info("PRJ_DIR: %s" % prj_dir)
sys.path.append(prj_dir)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "%s.settings" % prj_dir.split("/")[-1])
django.setup()
...
...
Run Code Online (Sandbox Code Playgroud)
/在Windows上运行脚本时,您似乎试图通过正斜杠拆分文件路径,其中路径分隔符是反斜杠\.使用os.path.basename而不是手动处理stings(.split("/")[-1]):
>>> import os
>>> os.path.basename(r'/home/user/project')
'project'
>>> os.path.basename(r'c:\users\user\project')
'project'
Run Code Online (Sandbox Code Playgroud)
相比下:
>>> r'/home/user/project'.split("/")[-1]
'project' # works
>>> r'c:\users\user\project'.split("/")[-1]
'c:\\users\\user\\project' # error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1377 次 |
| 最近记录: |