为了账号安全,请及时绑定邮箱和手机立即绑定

如何让python解耦在实时服务器上工作?

如何让python解耦在实时服务器上工作?

慕斯王 2022-09-06 15:58:42
我似乎无法让python解耦在实时服务器上工作。我有一个Django项目,其中使用python解耦来分离.env文件中的重要变量,例如密钥,调试,数据库vars等。当项目在本地运行时,python解耦工作得很好,我没有问题。在确认它在本地运行良好后,我将 .env 文件添加到我的 .gitignore 文件中,将代码推送到我的 GitHub 存储库,然后将代码提取到 AWS 实时服务器。但是,在AWS EC2 Ubuntu服务器上配置项目时尝试进行迁移时,我收到以下错误。似乎.env文件中的变量没有应用于AWS Ubuntu服务器,由于.gitignore文件,这是有道理的。但我认为python解耦的全部意义在于不要在实时服务器上有重要的变量。有谁知道为什么会发生这个错误?以及我该如何修复它?还是不完全理解python解耦的用例?$ python manage.py makemigrationsTraceback (most recent call last):  File "manage.py", line 15, in <module>    execute_from_command_line(sys.argv)  File "/home/theo/aggtrends/aggenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line    utility.execute()  File "/home/theo/aggtrends/aggenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 345, in execute    settings.INSTALLED_APPS  File "/home/theo/aggtrends/aggenv/lib/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__         self._setup(name)  File "/home/theo/aggtrends/aggenv/lib/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup    self._wrapped = Settings(settings_module)  File "/home/theo/aggtrends/aggenv/lib/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__           mod = importlib.import_module(self.SETTINGS_MODULE)      File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module    return _bootstrap._gcd_import(name[level:], package, level)  File "<frozen importlib._bootstrap>", line 994, in _gcd_import  File "<frozen importlib._bootstrap>", line 971, in _find_and_load  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked  File "<frozen importlib._bootstrap_external>", line 678, in exec_module  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed  File "/home/theo/aggtrends/aggregatetrends/settings.py", 
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

是的,不应将易受攻击的数据(如文件)存储在公共存储库中。.env

但是,您应该在服务器端再次创建它。

  1. 连接到服务器

  2. 转到项目文件夹

  3. 创建文件并使用您使用的所有必要变量实现它。.env


查看完整回答
反对 回复 2022-09-06
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

根据我的发现,我认为只有一种方法可以使用每个环境,无论是本地服务器还是实时服务器。首先,您需要将python解耦库与.env文件一起安装,如下所示:

  1. Install Python-Decouple:

    pip install python-decouple

  2. 在项目的根目录下创建一个 .env 文件,并按照此格式在文件中定义环境变量。

    SECRET_KEY = secret_key_for_app_you_may_use_code_to_it_unique

    DATABASE_NAME = name_of_your_database

    DATABASE_USER = your_database_username

    DATABASE_PASSWORD = your_database_password

请注意,变量的值中没有引号。3. 在 settings.py 中导入 config 方法,并使用它来调用这些变量,如下所示:

from decouple import config

现在使用config方法调用

DATABASES = {

'default': {

    'ENGINE': 'django.db.backends.postgresql',

    'NAME': config('DATABASE_NAME'),

    'USER': config('DATABASE_USER'),

    'PASSWORD': config('DATABASE_PASS'),

    'HOST': 'localhost'

}

}

使用此方法,如果您在使用CLI或Cpanel的服务器上托管,它们将以任何一种方式正常工作,方法是将.env文件上传到您的Web服务器(Cpanel)并执行我在这里所做的操作,或者在具有键值对的Python应用程序下添加环境变量,安装Python-Decouple,从 settings.py 中的解耦导入配置,然后如上所述调用它们。我认为这应该对你有所帮助。谢谢

适当位置的变量


查看完整回答
反对 回复 2022-09-06
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信