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

我似乎无法让python解耦在实时服务器上工作。我有一个Django项目,其中使用python解耦来分离.env文件中的重要变量,例如密钥,调试,数据库vars等。当项目在本地运行时,python解耦工作得很好,我没有问题。


在确认它在本地运行良好后,我将 .env 文件添加到我的 .gitignore 文件中,将代码推送到我的 GitHub 存储库,然后将代码提取到 AWS 实时服务器。


但是,在AWS EC2 Ubuntu服务器上配置项目时尝试进行迁移时,我收到以下错误。似乎.env文件中的变量没有应用于AWS Ubuntu服务器,由于.gitignore文件,这是有道理的。但我认为python解耦的全部意义在于不要在实时服务器上有重要的变量。有谁知道为什么会发生这个错误?以及我该如何修复它?还是不完全理解python解耦的用例?


$ python manage.py makemigrations

Traceback (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", 


慕斯王
浏览 97回答 2
2回答

POPMUISE

是的,不应将易受攻击的数据(如文件)存储在公共存储库中。.env但是,您应该在服务器端再次创建它。连接到服务器转到项目文件夹创建文件并使用您使用的所有必要变量实现它。.env

紫衣仙女

根据我的发现,我认为只有一种方法可以使用每个环境,无论是本地服务器还是实时服务器。首先,您需要将python解耦库与.env文件一起安装,如下所示:Install Python-Decouple:pip install python-decouple在项目的根目录下创建一个 .env 文件,并按照此格式在文件中定义环境变量。SECRET_KEY = secret_key_for_app_you_may_use_code_to_it_uniqueDATABASE_NAME = name_of_your_databaseDATABASE_USER = your_database_usernameDATABASE_PASSWORD = your_database_password请注意,变量的值中没有引号。3. 在 settings.py 中导入 config 方法,并使用它来调用这些变量,如下所示:from&nbsp;decouple&nbsp;import&nbsp;config现在使用config方法调用DATABASES = {'default': {&nbsp; &nbsp; 'ENGINE': 'django.db.backends.postgresql',&nbsp; &nbsp; 'NAME': config('DATABASE_NAME'),&nbsp; &nbsp; 'USER': config('DATABASE_USER'),&nbsp; &nbsp; 'PASSWORD': config('DATABASE_PASS'),&nbsp; &nbsp; 'HOST': 'localhost'}}使用此方法,如果您在使用CLI或Cpanel的服务器上托管,它们将以任何一种方式正常工作,方法是将.env文件上传到您的Web服务器(Cpanel)并执行我在这里所做的操作,或者在具有键值对的Python应用程序下添加环境变量,安装Python-Decouple,从 settings.py 中的解耦导入配置,然后如上所述调用它们。我认为这应该对你有所帮助。谢谢适当位置的变量
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python