2018/10/16

[Python] dependency_links を使わないでレポジトリを明示的に指定する方法

以前書いたように
dependency_links は Deprecated な状態にありながらも、有効な代替手段がない状態でした。

> 参考
> 
> [setup.py に dependency_links を書いても "Could not find a version that satisfies the requirement" が出る場合の対処方法4種 | 穀風](https://kokufu.blogspot.com/2018/04/setuppy-dependencylinks-could-not-find.html)

しかし、先日2018/10/5 リリースされた pip 18.1 で [PEP 508](https://www.python.org/dev/peps/pep-0508/) が実装され `dependency_links` を使わないで独自のレポジトリを指定できるようになりました。



> 参考
> 
> - [Release Notes](https://pip.pypa.io/en/stable/news/)
> - [Add support for PEP 508 @ url syntax by xavfernandez · Pull Request #4175 · pypa/pip · GitHub](https://github.com/pypa/pip/pull/4175)

例えば、`mytestlib` というパッケージを `myserver.com` にあるレポジトリからインストールするとします。
その場合、以下のようにパッケージ名の後ろに `@` をつけてパスを指定すればOKです。(タグを指定する場合は、さらに `@` をつけて指定します)


```python
`title: "mytestapp/setup.py"; `highlight: [21];
# -*- coding: utf-8 -*-

import setuptools

with open('README.md') as f:
    readme = f.read()

with open('LICENSE') as f:
    license = f.read()


setuptools.setup(
    name='mytestapp',
    version='0.1',
    description='Test Application for checking dependency_links',
    long_description=readme,
    url='',
    licence=license,
    packages=setuptools.find_packages(exclude=('tests', 'docs')),
    install_requires=[
        'mytestlib@git+https://myserver.com/kokufu/mytestlib.git@0.1'
    ],
    test_suite='tests',
    entry_points={
        'console_scripts': [
            'mytestapp=mytestapp.main:main'
        ]
    }
)
```

0 件のコメント: