编写Python开发环境设置脚本

编写Python开发环境设置脚本,python,Python,我已经创建了一个Python脚本集合,用作我们开发组的工具。脚本具有依赖性,例如请求和flake8(从技术上讲,这应该在dev设置下,但不管怎样) 我创建了一个setup-dev.bat文件,其目的是作为“第一次使用”设置 这个想法是: 在系统上安装和/或升级pip 在系统上安装和/或升级virtualenv 创建虚拟环境.env 激活它 升级其下的pip和virtualenv(不确定这是否有意义) “安装”脚本-最重要的是,这将安装依赖项 现在脚本已经可以使用了,它们的依赖关系包含在.env中

我已经创建了一个Python脚本集合,用作我们开发组的工具。脚本具有依赖性,例如
请求
flake8
(从技术上讲,这应该在
dev
设置下,但不管怎样)

我创建了一个
setup-dev.bat
文件,其目的是作为“第一次使用”设置

这个想法是:

  • 在系统上安装和/或升级
    pip

  • 在系统上安装和/或升级
    virtualenv

  • 创建虚拟环境
    .env

  • 激活它

  • 升级其下的
    pip
    virtualenv
    (不确定这是否有意义)

  • “安装”脚本-最重要的是,这将安装依赖项

  • 现在脚本已经可以使用了,它们的依赖关系包含在
    .env
    中。这个想法是——如果/当这些脚本被分发到更高的环境以供Ops运行时,我不想用我的依赖性污染它们的环境

    我应该指出,这些工具永远不会在
    pip
    或任何其他系统上分发,它们是公司内部使用的,将托管在源代码管理上,或通过电子邮件发送给运营部,并附带执行说明

    现在我的问题是:

  • 这有意义吗
  • 我是否无意中创建了对Windows的依赖关系?在上面的步骤
    4
    中,我应该只运行
    \activate
    而不是
    .bat
    ?我猜
    .env
    取决于主机系统,在不同的操作系统下会有不同的内容?我必须调用哪个脚本才能以大多数操作系统不可知的方式激活环境?
    激活
    ps1
    .bat
  • 在我的脚本的用户第一次设置它之后,我想应该教育他们,如果他们想要运行脚本,他们必须首先运行
    .env\scripts\activate
    ?有没有什么方法可以半自动化,让它更明显或更简单
  • 为什么我得到
    您使用的是pip版本19.0.3,而版本19.3.1可用。
    由于我的
    pip升级
    命令 编辑:

    • 我将
      python-mpip安装--upgrade pip--user
      更改为
      python-mpip安装--upgrade pip
      ,这样就消除了错误。我想在
      venv
      下安装“为用户”是没有意义的
    • 根据下面的评论,我去掉了
      virtualenv
      步骤
    • pip安装。
      更改为
      pip安装-e.
      ,以确保脚本(其中一些用作配置)仍然可编辑

    我觉得我正在进步,但我对这种设置缺少帖子感到困惑,感觉我做错了什么。

    你可以将脚本捆绑在一个轮子文件中(阅读关于入口点的内容),该文件可以通过pip安装(即,
    pip install bundle.whl
    ;请参阅)。使用这种方法,依赖项将成为控制盘文件的一部分,安装控制盘文件时,pip将自动安装依赖项


    ——pip的用户
    标志将脚本安装在由确定的用户本地位置。因此,如果您对脚本“污染”用户的本地安装没有意见,那么就不需要virtualenv。

    您只需使用get go中的最新pip版本创建env即可-请参阅关于这一点的公认答案。因为stdlib,你现在根本不需要安装
    virtualenv
    。哦,好吧,我会去掉
    virtualenv
    的步骤,然后听起来你需要这样的东西。
    python -m pip install --upgrade pip --user
    python -m pip install --upgrade virtualenv --user
    python -m venv .env
    call .\.env\Scripts\Activate.bat
    python -m pip install --upgrade pip --user
    python -m pip install --upgrade virtualenv --user
    pip install .