【Python】项目开发环境配置

一、常用依赖安装

  • 安装mysql和redis,并启动服务,安装方法详见"MySQL与Redis的安装"一文
  • 安装python开发包:

    • 执行pip3 install python-devel
    • 如果报找不到python-devel,则安装python-dev

  • 安装mysql-devel和mysql-libs:yum install mysql-devel mysql-libs,注意:在centos中这里安装使用的是系统包管理器yum
  • 安装bzip2-devel:yum install bzip2-devel
  • 安装git:yum install git

二、mysql数据库与权限

  • 创建项目数据库:create database 名字 charset utf8;
  • 创建测试用例数据库:create database test_名字 charset utf8; ,测试用例数据库以test开头
  • 创建超级用户:create user "名字"@"%" identified by "密码";
  • 授权:超级用户拥有项目数据库和测试用例数据库的所有全新啊

    • grant all on 数据库名.* to "用户名"@"%";
    • grant all on test_数据库名.* to "用户名"@"%";

  • 刷新权限:flush privileges;

三、远程连接pycharm

项目部署上线是在linux环境中,正常的开发中很多人使用的是mac或者windows系统,为了能够本机开发代码及时上传到远端服务器中,提高开发效率,需要在pycharm中设置远程连接

  • 在pycharm中设置远端服务器并连接。在Tools中找到Development,点击Configration进入配置页面

【Python】项目开发环境配置

  • 进入配置页面点击+,选择SFTP,设置服务器名字

【Python】项目开发环境配置
【Python】项目开发环境配置

  • 点击SSH configration进行连接配置,点击+添加配置页面,配置之后测试连接是否成功

【Python】项目开发环境配置

  • 配置生效之后返回STFP配置页面,设置Root path路径,这里设置的是项目的上一级目录,例如:项目的名字为backstage,上一级目录为testProject,那么这里写/testProject,结尾没有斜杠
  • 在Advanced中设置Send keep alive messages each,这里设置为10s
  • 设置Mappings页面Development path设置为项目的名字,以斜杠开头,结尾没有斜杠

【Python】项目开发环境配置

  • 应用后,设置Python Interpreter

【Python】项目开发环境配置

  • 新建SSH Interpreter,选择已经创建的远程连接

【Python】项目开发环境配置

  • Interpreter是远程服务器的中的,不是本地机器的,远程服务器使用pipenv --py获取Python Interpreter;Sync folders中左侧是本地项目目录,右侧是远程服务器中的项目目录,两者之间做了映射。

【Python】项目开发环境配置

  • 新建完成之后选择并应用
  • 在项目上点击右键,选择Sync with Deployed to....,然后选择对应的远程服务器进入到新的页面,本地目录和远程目录文件比较,拉取远程文件到本地或者跟新本地修改文件到远程服务器

【Python】项目开发环境配置

  • 设置项目的run/debug Configrations

    • Python Interpreter:选择设定好的远程连接中的Interpreter
    • Working directory:本地的项目路径
    • 在log中勾选后两项,项目开发中可以看到日志的详细信息

【Python】项目开发环境配置

  • 在Preferences中找到Languages & Frameworks中找到Django进行设置

    • 勾选Enable Django Support
    • Django project root:选择本地项目的目录路径
    • Settings选择到项目config/settings/local.py

  • 应用并启动本地服务
  • 启动之后可能会出现的问题

    • 找不到celery和environ,使用pipenv导入即可
    • 源码中出现类似于raise KeyError, name之类的语法问题,直接修改为raise KeyError(name)即可

四、删改部分文件完成初始模版

在服务器端使用pipenv install -r requirements/local.txt导入所有的依赖

(一)、settings/base.py

  • 设置是否读取.env文件:修改settings/base.py中的default=True,读取该文件,并在项目的根目录下新建.env文件

READ_DOT_ENV_FILE = env.bool("DJANGO_READ_DOT_ENV_FILE", default=True)~~~~

  • 修改时区和语言
  • DATABASES"default" = True表示的是将HTTP请求中的数据库操作封装成事务
  • 安全设置:CSRF_COOKIE_HTTPONLY = Flase,设置为True则只能允许http来获取csrf token,如果设置为False则可以有其他的方式,例如:js
  • 设置Celery:

    • CELERY_RESULT_BACKEND = env('CELERY_RESULT_BACKEND'),CELERY_RESULT_BACKEND在.env文件中设置
    • CELERY_ACCEPT_CONTENT = ["json", 'msgpack']
    • 序列化与反序列化数据格式:CELERY_TASK_SERIALIZER = "json"设置为"msgpack",因为msgpck格式数据比json格式数据更小更快

(二)、settings/local.py(本地开发环境配置文件)

  • 主机设置:ALLOWED_HOSTS = ["*"]
  • 删除文件中关于邮件的配置,因为这些配置在base.py文件中已经定义了
  • 查看debug配置

(三)、settings/production.py(生产环境配置文件)

  • 删除STORAGES配置,这个是亚马逊的缓存配置,用不到

# STORAGES

# ------------------------------------------------------------------------------

# https://django-storages.readthedocs.io/en/latest/#installation

INSTALLED_APPS += ["storages"] # noqa F405

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings

AWS_ACCESS_KEY_ID = env("DJANGO_AWS_ACCESS_KEY_ID")

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings

AWS_SECRET_ACCESS_KEY = env("DJANGO_AWS_SECRET_ACCESS_KEY")

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings

AWS_STORAGE_BUCKET_NAME = env("DJANGO_AWS_STORAGE_BUCKET_NAME")

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings

AWS_QUERYSTRING_AUTH = False

# DO NOT change these unless you know what you're doing.

_AWS_EXPIRY = 60 * 60 * 24 * 7

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings

AWS_S3_OBJECT_PARAMETERS = {

"CacheControl": f"max-age={_AWS_EXPIRY}, s-maxage={_AWS_EXPIRY}, must-revalidate"

}

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings

AWS_S3_REGION_NAME = env("DJANGO_AWS_S3_REGION_NAME", default=None)

# https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#cloudfront

AWS_S3_CUSTOM_DOMAIN = env("DJANGO_AWS_S3_CUSTOM_DOMAIN", default=None)

aws_s3_domain = AWS_S3_CUSTOM_DOMAIN or f"{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com"

  • 删除邮箱配置

# EMAIL

# ------------------------------------------------------------------------------

# https://docs.djangoproject.com/en/dev/ref/settings/#default-from-email

DEFAULT_FROM_EMAIL = env(

"DJANGO_DEFAULT_FROM_EMAIL", default="Backstage <[email protected]>"

)

# https://docs.djangoproject.com/en/dev/ref/settings/#server-email

SERVER_EMAIL = env("DJANGO_SERVER_EMAIL", default=DEFAULT_FROM_EMAIL)

# https://docs.djangoproject.com/en/dev/ref/settings/#email-subject-prefix

EMAIL_SUBJECT_PREFIX = env(

"DJANGO_EMAIL_SUBJECT_PREFIX", default="[Backstage]"

)

  • 删除媒体和静态文件的配置

# STATIC

# ------------------------

STATICFILES_STORAGE = "backstage.utils.storages.StaticRootS3Boto3Storage"

COLLECTFAST_STRATEGY = "collectfast.strategies.boto3.Boto3Strategy"

STATIC_URL = f"https://{aws_s3_domain}/static/"

# MEDIA

# ------------------------------------------------------------------------------

DEFAULT_FILE_STORAGE = "backstage.utils.storages.MediaRootS3Boto3Storage"

MEDIA_URL = f"https://{aws_s3_domain}/media/"

(四)、.env文件配置

  • MySQL连接配置:mysql://mysql账户:密码@ip地址/连接的数据库名

DATABASE_URL=mysql://root:[email protected]/Backstage

  • Redis连接配置:redis:ip地址:端口

REDIS_URL=redis://127.0.0.1:6379

  • Django的基本配置

    • 开启Django调试模式
    • 允许用户注册,设置为True
    • 自定义一个SECRET_KEY

DJANGO_DEBUG=True

DJANGO_ACCOUNT_ALLOW_REGISTRATION=True

DJANGO_SECRET_KEY=TgdsdsiYdsk2JKDu3kjHe9kjjkw32jeuejbds83hw7skjhr38dkjh32sdkjb345bshrnbdbwoeska3wusUUeCV

  • Django生产环境的配置

    • DJANGO_ALLOWED_HOSTS
    • DJANGO_SECURE_SSL_REDIRECT
    • DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS
    • DJANGO_SECURE_HSTS_PRELOAD
    • DJANGO_SECURE_CONTENT_TYPE_NOSNIFF
    • DJANGO_ADMIN_URL

  • 发送邮件的配置

    • DJANGO_EMAIL_BACKEND
    • DJANGO_EMAIL_HOST
    • DJANGO_EMAIL_USE_SSL
    • DJANGO_EMAIL_PORT
    • DJANGO_EMAIL_HOST_USER
    • DJANGO_EMAIL_HOST_PASSWORD
    • DJANGO_DEFAULT_FROM_EMAIL

DJANGO_EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend

DJANGO_EMAIL_HOST=smtpdm.163.com

DJANGO_EMAIL_USE_SSL=True

DJANGO_EMAIL_PORT=25

DJANGO_EMAIL_HOST_USER='****@163.com'

DJANGO_EMAIL_HOST_PASSWORD='****' # 开启smtp是的授权码

DJANGO_DEFAULT_FROM_EMAIL='这里写标题<****@163.com>'

  • 163邮箱开启服务和获取授权码

【Python】项目开发环境配置
【Python】项目开发环境配置

  • Celery的配置

    • 在base.py文件中找到CELERY_RESULT_BACKEND,设置为CELERY_RESULT_BACKEND=env("CELERY_RESULT_BACKEND"),具体的CELERY_RESULT_BACKEND在.env文件中设置
    • 在.env文件中设置Celery

      • CELERY_RESULT_BACKEND:存放缓存结果
      • CELERY_BROKER_URL:缓存中间人、代理人

CELERY_BROKER_URL=redis://127.0.0.1:6379/1 # 缓存中间人,设置在redis的1库里

CELERY_RESULT_BACKEND=redis://127.0.0.1:6379/2 # 设置缓存结果存在在redis的2库里

  • 在wsgi.py文件设置,把production改成local

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")

五、安装模块报错问题:

  • xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

    • 原因:macos系统升级没有装xcode command line
    • 解决:

      • xcode-select --install安装
      • 如果上一步没有解决,则使用sudo xcode-select -switch /

以上是 【Python】项目开发环境配置 的全部内容, 来源链接: utcz.com/a/74910.html

回到顶部