> 백엔드 개발 > 파이썬 튜토리얼 > Python 프로젝트에서 구성을 읽고 쓰는 올바른 방법은 무엇입니까?

Python 프로젝트에서 구성을 읽고 쓰는 올바른 방법은 무엇입니까?

PHPz
풀어 주다: 2023-05-09 19:16:06
앞으로
1900명이 탐색했습니다.

Python 프로젝트에서 구성을 읽고 쓰는 올바른 방법은 무엇입니까?

1. Python 파일에 구성 작성

이 방법은 매우 간단하지만 심각한 보안 문제가 있습니다. 누군가가 소스 코드를 업로드하면 구성을 작성하면 안 됩니다. GitHub의 데이터베이스 구성은 세상에 공개되는 것과 동일합니다. 물론 구성 파일에 민감한 정보가 포함되어 있지 않은 경우에도 이 간단한 방법을 사용할 수 있습니다.

2. 외부 구성 파일

을 사용하여 구성 파일과 코드를 독립적으로 만듭니다. 일반적으로 구성을 저장하는 데 json, yaml 또는 ini 파일 형식이 사용됩니다.

환경 변수와 Python 라이브러리를 결합하여 외부 파일을 읽습니다. 우선 개발은 일반적으로 생성 환경과 접촉하지 않으므로 생성 환경의 구성 파일은 운영 및 유지 관리 후에 작성됩니다. 애플리케이션에 필요한 구성을 작성하고 프로덕션 서버의 지정된 위치에 배치하면 코드는 지정된 위치에서 구성을 읽습니다.

프로그램의 통합 디버깅을 용이하게 하기 위해 시스템 환경 변수(XXX_CONFIG_PATH)에 미리 동의하여 구성 파일의 저장 경로를 지정할 수 있습니다.

예: 내보내기 구성을 읽으려면 시스템 환경 변수를 사용하세요.
이 방법은 구성 정보를 저장하기 위해 파일을 사용하지 않습니다. 실제로는 모든 구성 정보가 환경 변수에 저장됩니다. 프로그램이 실행되기 전에 필요한 ansible 배포 스크립트를 통해 배포됩니다. 구성된 정보를 환경 변수로 가져옵니다.

비밀번호 등 구성 정보의 보호를 어느 정도 강화하는 파일 저장소를 사용하지 않지만, 특히 구성을 수정해야 하는 경우 운영 및 유지 관리 작업량이 늘어납니다.

4. 마이크로서비스 아키텍처

일부 마이크로서비스 아키텍처에서는 구성 센터가 특별히 개발되며, 프로그램이 온라인에서 구성을 직접 읽어 개발, 운영 및 유지 관리를 용이하게 하는 구성 관리용 GUI도 개발됩니다. .

5. 일반 프로젝트에서 권장되는 구성 방법

1

2

3

4

5

6

7

8

9

10

查看环境变量:

 env

 设置永久环境变量

 1.在/etc/profile 的文件下编辑,所改变的环境变量是面向所有用户的

 export CLASSPATH = /../...该路径为绝对路径

 2.在当前用户目录下./barsh_profile文件中修改 进行修改的话,仅对当前的用户生效

 vim /home/wens/.barshc

 export CLASSPATH = /../...该路径为绝对路径

 最后使用source命令 可以直接使环境变量生效

 source/home/wens/.barshc //直接跟环境变量的文件

로그인 후 복사

그 중

__init__.py

에는 현재 환경이 개발 환경을 사용하는지 아니면 프로덕션 환경을 사용하는지 판단하는 판단 로직을 추가하여 다양한 구성 매개변수를 로드합니다.

1

2

3

4

5

6

7

8

9

10

11

查看环境变量:

 set

 查看某个环境变量:

 set path

 修改环境变量

 输入 “set 变量名=变量内容”即可。比如将path设置为“d:nmake.exe”,只要输入set path="d:nmake.exe"

 注意:所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改。也就是说当关闭此cmd命令行窗口后,将不再起作用。

 永久性修改环境变量的方法有两种:

 一种是直接修改注册表

 另一种是通过我的电脑-〉属性-〉高级,来设置系统的环境变量(查看详细)

 设置了环境变量后,需要重启 pycharm 生效

로그인 후 복사

base.py

는 몇 가지 공통 구성을 저장한 다음 개발 환경

dev.py 및 프로덕션 환경 prod.py에서 base.py

변수를 가져옵니다.

1

2

3

4

5

6

7

8

-app

-__init.py

-app.py

-settings

 -__init__.py

 -base.py

 -dev.py

 -prod.py

로그인 후 복사
어디 dev.py:

1

2

3

4

5

6

7

8

9

10

11

12

13

# settings/__init__.py

 import os

 # os.environ.get() 用于获取系统中的环境变量,因为在生产环境中,一般都会把一些关键性的参数写到系统的环境中。

 # 所以PROFILE的值其实就是我们配置的环境变量的值。如果没有配这个值,默认走dev的配置。

 # PYTHON_PRO_PROFILE = os.environ.get("PYTHON_PRO_PROFILE", "dev")

 PYTHON_PRO_PROFILE = os.environ.get("PYTHON_PRO_PROFILE")

 print("是开发环境还是生产环境: ", PYTHON_PRO_PROFILE)

 if PYTHON_PRO_PROFILE == "dev":

 from .dev import *

 elif PYTHON_PRO_PROFILE == "prod":

 from .prod import *

 else:

 raise Exception("Not supported runtime profile {}".format(PYTHON_PRO_PROFILE))

로그인 후 복사
어디 prod.py:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# settings/base.py

 import os

 import time

 # os.path.abspath: 获取完整路径(包含文件名)

 current_exec_abspath = os.path.abspath(__file__)

 current_exec_dir_name, _ = os.path.split(current_exec_abspath)

 current_up_dir, _ = os.path.split(current_exec_dir_name)

 current_up2_dir, _ = os.path.split(current_up_dir)

 print('------log dir=------', current_up2_dir)

 # 日志文件路径设置

 log_path = f"{current_up2_dir}/logs"

 if not os.path.exists(log_path):

 os.makedirs(log_path)

 t = time.strftime("%Y_%m_%d")

 log_path_file = f"{log_path}/interface_log_{t}.log"

로그인 후 복사

위 내용은 Python 프로젝트에서 구성을 읽고 쓰는 올바른 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿