我正在使用 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 包含该令牌。这对我来说似乎很难看(我希望其他用户仍然使用他们自己的用户名/密码)。
我怎样才能实现这个目标?
我想计算作为实例实现的两个有理数的最大公约数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()?我不是在寻找此处使用的实际算法,而是在寻找已弃用函数的替代品。