我在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
为什么会发生这种情况?如果有任何其他的方法来安装多个私有包,而不硬编码我的令牌在需求。
1条答案
按热度按时间brgchamk1#
正如@Abdul Aziz Barkat提到的,我的环境变量没有设置。
我用
source .env
来加载我的变量。当我用echo $MY_ENV
检查的时候,我的变量显示出来了。所以我认为这是可以的。但是当我使用
cat <(envsubst < requirements.txt)
来检查我的变量时,它们在requirements.txt中被替换为一个空字符串。正如@Charles Duffy所指出的,为了从
.env
文件中导出var,我应该用途:这个消息来源帮助我:https://ostechnix.com/difference-between-defining-bash-variables-with-and-without-export/