运行 Cygwin 中的 Django 总是找不到 SECRET_KEY
Running Django in Cygwin can't always find SECRET_KEY
我正在使用 Windows 版本的 Python 3.4.3(不能使用 Cygwin 的 Python 因为我需要 pywin32),Cygwin 2.0.4(0.287/5 /3), 和 Django 1.7.8 (由于依赖原因不能使用 1.8.x).
我的问题是大约一半的时间我在 Cygwin shell 中做任何与 Django 相关的事情,我得到错误 -
Traceback (most recent call last):
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 182, in __call__
self._pre_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 754, in _pre_setup
self._fixture_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 887, in _fixture_setup
if not connections_support_transactions():
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 874, in connections_support_transactions
for conn in connections.all())
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 257, in all
return [self[alias] for alias in self]
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 254, in __iter__
return iter(self.databases)
File "C:\dev\web\.env\lib\site-packages\django\utils\functional.py", line 55, in __get__
res = instance.__dict__[self.func.__name__] = self.func(instance)
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 148, in databases
self._databases = settings.DATABASES
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 46, in __getattr__
self._setup(name)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 115, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
在这种情况下,我正在尝试 运行 使用 nose
进行简单的单元测试。奇怪的是它在大约 50% 的时间内断断续续地发生。
我可以通过这个小测试确认我的 PYTHONPATH
设置正确。
printf "3c";printf "+++ python sys.path\n\n";python -c "import sys;print(sys.path)";printf "\n+++ building...\n\n"; nosetests app -v
哪个输出。
+++ python sys.path
['', 'C:\dev\web', 'C:\WINDOWS\system32\python34.zip', 'C:\dev\web\.env\DLLs', 'C:\dev\web\.env\lib', 'C:\dev\web\.env\Scripts', 'C:\Python34\Lib', 'C:\Python34\DLLs', 'C:\dev\web\.env', 'C:\dev\web\.env\lib\site-packages', 'C:\dev\web\.env\lib\site-packages\win32', 'C:\dev\web\.env\lib\site-packages\win32\lib', 'C:\dev\web\.env\lib\site-packages\Pythonwin']
+++ building...
ERROR
======================================================================
ERROR: test_foo (asd.tests.FooTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 182, in __call__
self._pre_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 754, in _pre_setup
self._fixture_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 887, in _fixture_setup
if not connections_support_transactions():
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 874, in connections_support_transactions
for conn in connections.all())
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 257, in all
return [self[alias] for alias in self]
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 254, in __iter__
return iter(self.databases)
File "C:\dev\web\.env\lib\site-packages\django\utils\functional.py", line 55, in __get__
res = instance.__dict__[self.func.__name__] = self.func(instance)
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 148, in databases
self._databases = settings.DATABASES
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 46, in __getattr__
self._setup(name)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 115, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
----------------------------------------------------------------------
Ran 0 tests in 0.327s
FAILED (errors=1)
什么会导致这种差异?
这才是真正的原因。
我有环境变量 DJANGO_SETTINGS_MODULE
和 django_settings_module
- 名称相同,大小写不同。 DJANGO_SETTINGS_MODULE
被适当地设置为 config.settings.local
,而 django_settings_module
被设置为 asd
。
我不知道 1) 这两个都已定义,并且 2) shell(Cygwin shell,无论如何)随机 returns 一个值,尽管存在差异。
我正在使用 Windows 版本的 Python 3.4.3(不能使用 Cygwin 的 Python 因为我需要 pywin32),Cygwin 2.0.4(0.287/5 /3), 和 Django 1.7.8 (由于依赖原因不能使用 1.8.x).
我的问题是大约一半的时间我在 Cygwin shell 中做任何与 Django 相关的事情,我得到错误 -
Traceback (most recent call last):
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 182, in __call__
self._pre_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 754, in _pre_setup
self._fixture_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 887, in _fixture_setup
if not connections_support_transactions():
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 874, in connections_support_transactions
for conn in connections.all())
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 257, in all
return [self[alias] for alias in self]
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 254, in __iter__
return iter(self.databases)
File "C:\dev\web\.env\lib\site-packages\django\utils\functional.py", line 55, in __get__
res = instance.__dict__[self.func.__name__] = self.func(instance)
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 148, in databases
self._databases = settings.DATABASES
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 46, in __getattr__
self._setup(name)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 115, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
在这种情况下,我正在尝试 运行 使用 nose
进行简单的单元测试。奇怪的是它在大约 50% 的时间内断断续续地发生。
我可以通过这个小测试确认我的 PYTHONPATH
设置正确。
printf "3c";printf "+++ python sys.path\n\n";python -c "import sys;print(sys.path)";printf "\n+++ building...\n\n"; nosetests app -v
哪个输出。
+++ python sys.path
['', 'C:\dev\web', 'C:\WINDOWS\system32\python34.zip', 'C:\dev\web\.env\DLLs', 'C:\dev\web\.env\lib', 'C:\dev\web\.env\Scripts', 'C:\Python34\Lib', 'C:\Python34\DLLs', 'C:\dev\web\.env', 'C:\dev\web\.env\lib\site-packages', 'C:\dev\web\.env\lib\site-packages\win32', 'C:\dev\web\.env\lib\site-packages\win32\lib', 'C:\dev\web\.env\lib\site-packages\Pythonwin']
+++ building...
ERROR
======================================================================
ERROR: test_foo (asd.tests.FooTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 182, in __call__
self._pre_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 754, in _pre_setup
self._fixture_setup()
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 887, in _fixture_setup
if not connections_support_transactions():
File "C:\dev\web\.env\lib\site-packages\django\test\testcases.py", line 874, in connections_support_transactions
for conn in connections.all())
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 257, in all
return [self[alias] for alias in self]
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 254, in __iter__
return iter(self.databases)
File "C:\dev\web\.env\lib\site-packages\django\utils\functional.py", line 55, in __get__
res = instance.__dict__[self.func.__name__] = self.func(instance)
File "C:\dev\web\.env\lib\site-packages\django\db\utils.py", line 148, in databases
self._databases = settings.DATABASES
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 46, in __getattr__
self._setup(name)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "C:\dev\web\.env\lib\site-packages\django\conf\__init__.py", line 115, in __init__
raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
----------------------------------------------------------------------
Ran 0 tests in 0.327s
FAILED (errors=1)
什么会导致这种差异?
这才是真正的原因。
我有环境变量 DJANGO_SETTINGS_MODULE
和 django_settings_module
- 名称相同,大小写不同。 DJANGO_SETTINGS_MODULE
被适当地设置为 config.settings.local
,而 django_settings_module
被设置为 asd
。
我不知道 1) 这两个都已定义,并且 2) shell(Cygwin shell,无论如何)随机 returns 一个值,尽管存在差异。