
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!