Lio*_*hen 12 python-3.x python-venv
出于持续集成的目的,我使用以下内置 py3.6 venv 命令(不要与 virtualenv 混淆)(请参阅pep 405)。
python -m venv --system-site-packages --without-pip <ENVNAME>
Run Code Online (Sandbox Code Playgroud)
我发现它工作得很好,我立即获得了一个环境。
但是,.... venv 会生成一个 pyvenv.cfg 文件,如下所示:
home = absolute/path/to/prefix/of/interpreter/which/ran/venv
include-system-site-packages = true
version = <interpreter python version>
Run Code Online (Sandbox Code Playgroud)
这个文件包含非常重要的home键,它指的是创建这个venv的原始基础python。非常重要的是,无效的主页键会导致在基本解释器中找不到其库的 python 进程崩溃。
现在我想将这个“经过测试的绿色”venv + 其基础 python 部署到生产机器上。我不想在生产系统上重建它,而只是将它复制到那里。
不用说,在 CI 工具上创建的主页绝对路径在生产机器上无效,所以我需要编辑 pyvenv.cfg 文件主页键,一切都像魅力一样工作。
这种文件操作是我真正想避免的步骤,因为我想生成一个只需要复制、激活和调用(标准方式)的工件。
我试图将 %xyz%、$xyz 甚至 configParser %(xyz)s 放在原始文件上,但这些都没有解决。我还尝试在那里使用相对路径,但该路径是相对于工作目录的,我不想强制生产系统从固定工作目录调用我的工件。
除了丑陋的 pyvenv.cfg 操作之外,还有其他解决方案吗?
小智 -1
您可以从 GitHub 中基于 Django 的项目存储库找到常见的解决方案,它们将所有必需的模块存储在单个文本文件requirements.txt而不是模块目录中。当其他人或生产服务器需要它们时,他们可以从pypi下载requirements.txt中的模块。因此,您所需要做的就是从 Yirtualenv 生成 requests.txt 文件,然后将该文件提交到 SCM。
| 归档时间: |
|
| 查看次数: |
5692 次 |
| 最近记录: |