首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyvenv.cfg中的Venv主密钥

pyvenv.cfg中的Venv主密钥
EN

Stack Overflow用户
提问于 2018-08-23 15:38:06
回答 3查看 13.3K关注 0票数 14

为了持续集成的目的,我使用以下内置的py3.6venv命令(不要将其与virtualenv混淆)(请参阅佩普405)。

代码语言:javascript
复制
python -m venv --system-site-packages --without-pip <ENVNAME>

我发现它工作得很好,而且我马上就能得到一个环境。

但是..。venv生成一个类似于以下内容的pyvenv.cfg文件:

代码语言:javascript
复制
home = absolute/path/to/prefix/of/interpreter/which/ran/venv
include-system-site-packages = true
version = <interpreter python version>

这个文件包含非常关键的主键,它引用这个venv创建的原始基python。非常重要的是,无效的主密钥会崩溃 python进程,而该进程在基本解释器中找不到它的库。

现在,我想将这个“经过测试的绿色”venv +它的基本python部署到生产机器上。--我不想在生产系统上重新构建,而只是将其复制到那里。

不用说,在CI工具上创建的home绝对路径在生产机器上是无效的,所以我需要编辑pyvenv.cfg文件主键,所有的东西都很有魅力。

这个文件操作是我真正想要避免的一个步骤,因为我想要生成一个只需要复制、激活和调用的工件(标准方法)。

我试图将%xyz%、$xyz甚至configParser %(Xyz)放在原始文件上,但这些都无法解决。我也尝试在那里使用一个相对路径,但是路径相对于工作目录,我不想强迫生产系统从固定的工作目录中调用我的工件。

,除了丑陋的pyvenv.cfg操作之外,还有其他解决方案吗?

EN

回答 3

Stack Overflow用户

发布于 2022-04-07 18:46:41

在窗口:

将以下代码添加到activate.bat中,以便在每次运行之前动态生成pyvenv.cfg

代码语言:javascript
复制
type %CMDER_ROOT%\vendor\python3\p3\scripts\pyvenv_tmp.cfg | powershell -Command "$input | ForEach-Object { $_ -replace \"CMDER_ROOT\", \"%CMDER_ROOT%\" }" > %CMDER_ROOT%\vendor\python3\p3\pyvenv.cfg

pyvenv_tmp.cfg数据:

代码语言:javascript
复制
home = CMDER_ROOT\vendor\python3
implementation = CPython
version_info = 3.10.4.final.0
virtualenv = 20.14.0
include-system-site-packages = false
base-prefix = CMDER_ROOT\vendor\python3
base-exec-prefix = CMDER_ROOT\vendor\python3
base-executable = CMDER_ROOT\vendor\python3\python3.exe
票数 1
EN

Stack Overflow用户

发布于 2021-03-09 10:20:38

根据虚拟环境的创建中的规范,您不需要激活venv。

您不需要特别地激活环境;激活只是将虚拟环境的二进制目录添加到您的路径中,这样“Python”就可以调用虚拟环境的Python解释器,并且可以运行已安装的脚本,而不必使用它们的完整路径。但是,安装在虚拟环境中的所有脚本都应该可以在不激活它的情况下运行,并使用虚拟环境的Python自动运行。

Linux示例:

代码语言:javascript
复制
export PYTHONPATH=venv/lib/python3.8/site-packages
/usr/bin/python3.8 -m mypackage

MS Windows示例:

代码语言:javascript
复制
export PYTHONPATH=venv/Lib/site-packages
c:/programs/python3.8/python.exe -m mypackage
票数 0
EN

Stack Overflow用户

发布于 2020-12-29 10:32:56

您可以从GitHub中的基于Django的项目存储库中找到常见的解决方案,它们将所有必需的模块存储在单个文本文件中,而不是模块目录中。当其他人或生产服务器需要它们时,他们可以从pypi下载requirements.txt中的模块。因此,您所需要的只是从您的Yirtualenv生成requirements.txt文件,然后将该文件提交给SCM。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51989490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档