【发布时间】:2020-04-29 01:31:42
【问题描述】:
我创建了一组 Python 脚本,用作我们开发组的工具。这些脚本具有依赖关系,例如 requests 和 flake8(这在技术上应该在 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 .
这个想法是:
在系统上安装和/或升级
pip在系统上安装和/或升级
virtualenv创建虚拟环境
.env激活它
升级它下面的
pip和virtualenv(完全不确定这是否有意义)“安装”脚本 - 最重要的是,安装依赖项
现在脚本可以使用了,它们的依赖项包含在.env 中。这个想法是 - 如果/当这些脚本被分发到更高的环境以供 Ops 运行时,我不想用我的依赖项污染他们的环境。
我应该指出,这些工具永远不会通过 pip 或任何其他系统分发,它们仅供公司内部使用,并将托管在源代码控制中,或通过电子邮件发送给运营部门并附上执行说明。
现在我的问题:
- 这有意义吗?
- 我是否无意中创建了对 Windows 的依赖项?在上面的步骤
4中,我可能应该只运行\activate而不是.bat?我猜.env取决于主机系统,并且在不同的操作系统下会有不同的内容?我必须调用哪个脚本以大多数与操作系统无关的方式激活环境?activate、ps1或.bat? - 在我的脚本的用户第一次设置它之后,我想他们应该被教育,如果他们想运行这些脚本,他们首先必须运行
.env\Scripts\activate?有没有办法半自动化,让它更明显或更简单? - 为什么我收到
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,因为stdlibvenv。 -
哦,好的,那我就去掉
virtualenv的步骤 -
听起来你想要pipenv之类的东西。
标签: python