小编Jea*_*ste的帖子

Pip 在 Gitlab-CI 上使用个人访问令牌从 Gitlab 安装私有存储库

我正在使用 Gitlab 托管两个私有 Python 包。其中一个(例如包 B)取决于另一个(例如 A)。

我想正确设置包 B,所以我有一个 setup.py

install_requires=[
    'packagea @ git+https://gitlab.com/me/packagea.git',
    ...
]
Run Code Online (Sandbox Code Playgroud)

以及包含的requirement.txt

git+https://gitlab.com/me/packagea.git@v1.0.1
Run Code Online (Sandbox Code Playgroud)

当用户使用安装包 Bpip install git+https://gitlab.com/me/packageb.git或用户克隆包 B 然后运行时,这种方法效果很好pip install -r requirements.txt

但是,我想在包 B 上设置持续集成。我的 gitlab-ci.yml 看起来像

image: python:3.7
before_script:
  - pip install -r requirements.txt

pylint:
  script:
    - pylint **/*.py
Run Code Online (Sandbox Code Playgroud)

此操作失败,因为 Gitlab-CI 运行程序没有任何用户名/密码来验证和拉取包 A 存储库。我读过,我可以生成一个个人访问令牌供 CI 运行程序进行身份验证,但这意味着 setup.py 和 requests.txt 包含该令牌。这对我来说似乎很难看(我希望其他用户仍然使用他们自己的用户名/密码)。

我怎样才能实现这个目标?

git pip gitlab-ci

6
推荐指数
2
解决办法
1万
查看次数

替换已弃用的 `fractions.gcd()` 函数?

我想计算作为实例实现的两个有理数的最大公约数fractions.Fraction。尽管打印了弃用警告,但它按预期工作:

In [1]: gcd(Fraction(2, 3), Fraction(2, 3))
/usr/local/bin/ipython:1: DeprecationWarning: fractions.gcd() is deprecated. Use math.gcd() instead.
  #!/usr/local/opt/python3/bin/python3.6
Out[1]: Fraction(1, 6)
Run Code Online (Sandbox Code Playgroud)

查看文档,我可以看到它fractions.gcd()确实已被弃用,并且邀请用户使用math.gcd()。问题是后者不支持有理数:

In [2]: gcd(Fraction(2, 3), Fraction(2, 3))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-c3ad2389f290> in <module>()
----> 1 gcd(Fraction(2, 3), Fraction(2, 3))

TypeError: 'Fraction' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud)

我可以使用哪个函数来替换fractions.gcd()?我不是在寻找此处使用的实际算法,而是在寻找已弃用函数的替代品。

python fractions python-3.x

3
推荐指数
1
解决办法
2997
查看次数

标签 统计

fractions ×1

git ×1

gitlab-ci ×1

pip ×1

python ×1

python-3.x ×1