python pip install-r requirements.txt没有扩展我的环境变量

bvhaajcl  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(161)

我在Gitlab注册表中有一个私有包。为了安装它,我必须创建一个令牌。
当我运行以下命令时:

pip install my-package-name --index-url https://${GITLAB_TOKEN_USER}:${GITLAB_TOKEN}@gitlab.com/api/v4/projects/12345678/packages/pypi/simple

软件包安装正确。使用以下代码行(我们可以看到ENV变量正确展开)

Looking in indexes: https://gitlab%2Bdeploy-token-564332:****@gitlab.com/api/v4/projects/1234567/packages/pypi/simple
Collecting my-package-name.
  Downloading https://gitlab.com/api/v4/projects/12345678/packages/ ...
....

但是当我尝试通过pip install -r requirements.txt安装时,我收到了以下消息:

Looking in indexes: https://%24%7BGITLAB_TOKEN_USER%7D:****@gitlab.com/api/v4/projects/1234567/packages/pypi/simple
WARNING: 401 Error, Credentials not correct for https://gitlab.com/api/v4/projects/1234567/packages/pypi/simple/my-package-name/
ERROR: Could not find a version that satisfies the requirement my-package-name (from versions: none)
ERROR: No matching distribution found for my-package-name

看起来当我使用这个命令时,ENV变量没有被展开。
我的requirements.txt如下所示:

--index-url https://${GITLAB_TOKEN_USER}:${GITLAB_TOKEN}@gitlab.com/api/v4/projects/1234567/packages/pypi/simple

my-package-name

我使用的是pip版本22.3.1

为什么会发生这种情况?如果有任何其他的方法来安装多个私有包,而不硬编码我的令牌在需求。

brgchamk

brgchamk1#

正如@Abdul Aziz Barkat提到的,我的环境变量没有设置。
我用source .env来加载我的变量。当我用echo $MY_ENV检查的时候,我的变量显示出来了。所以我认为这是可以的。
但是当我使用cat <(envsubst < requirements.txt)来检查我的变量时,它们在requirements.txt中被替换为一个空字符串。
正如@Charles Duffy所指出的,为了从.env文件中导出var,我应该用途:

set -a
source .env
set +a

这个消息来源帮助我:https://ostechnix.com/difference-between-defining-bash-variables-with-and-without-export/

相关问题