【问题标题】:Scripting Python dev env setup编写 Python 开发环境设置脚本
【发布时间】:2020-04-29 01:31:42
【问题描述】:

我创建了一组 Python 脚本,用作我们开发组的工具。这些脚本具有依赖关系,例如 requestsflake8(这在技术上应该在 dev 设置下,但无论如何)。

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

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 .

这个想法是:

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

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

  3. 创建虚拟环境.env

  4. 激活它

  5. 升级它下面的pipvirtualenv(完全不确定这是否有意义)

  6. “安装”脚本 - 最重要的是,安装依赖项

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

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

现在我的问题:

  1. 这有意义吗?
  2. 我是否无意中创建了对 Windows 的依赖项?在上面的步骤4 中,我可能应该只运行\activate 而不是.bat?我猜.env 取决于主机系统,并且在不同的操作系统下会有不同的内容?我必须调用哪个脚本以大多数与操作系统无关的方式激活环境? activateps1.bat?
  3. 在我的脚本的用户第一次设置它之后,我想他们应该被教育,如果他们想运行这些脚本,他们首先必须运行.env\Scripts\activate?有没有办法半自动化,让它更明显或更简单?
  4. 为什么我收到You are using pip version 19.0.3, however version 19.3.1 is available. 作为我的pip upgrade 命令的结果?!

编辑:

  • 我已将python -m pip install --upgrade pip --user 更改为python -m pip install --upgrade pip,这消除了错误。我猜想在venv 下安装“for the user”无论如何都没有意义。
  • 根据下面的评论,我摆脱了 virtualenv 步骤
  • pip install . 更改为 pip install -e . 以确保脚本(其中一些充当配置)仍可编辑。

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

【问题讨论】:

  • 您应该从一开始就使用最新的 pip 版本创建 env - 请参阅Control the pip version in virtualenv 上接受的答案。而且这些天你都不需要安装virtualenv,因为stdlib venv
  • 哦,好的,那我就去掉virtualenv的步骤
  • 听起来你想要pipenv之类的东西。

标签: python


【解决方案1】:

您可以将脚本捆绑在一个可通过 pip 安装的 wheel 文件中(请参阅 entry_points here)(即pip install bundle.whl;参见this)。使用这种方法,依赖项将成为wheel文件的一部分,并且pip会在安装wheel文件时自动安装依赖项。

--user 标记 pip 会将脚本安装在用户本地的位置,由the user scheme 确定。因此,如果您对“污染”用户本地安装的脚本感到满意,则不需要 virtualenv。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 2014-10-28
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多