PyPIに自作パッケージを登録する際にrequirements.txtを使用する方法

Sept. 22, 2018, 8:07 a.m.

#Python 

$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

PyPIに登録する際にはいつもこの記事を参考にしている.

しかし,今回は requirements.txt を使用したかったので,こちらの記事にある _requires_from_file() を用いて requirements.txtsetup.py 中で読み込むことにした.

が,ちゃんと記事を読んでいなかったので,作ったパッケージをインストールしようとしたところ

$ pip install lle7ch
Collecting lle7ch
  Downloading https://files.pythonhosted.org/packages/40/f8/c93b1906498bf573e6ca665fca766f92c780d13d438888cd317f68bccbb0/lle7ch-0.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/3j/3yb6rb916p70gz71129z3y7h0000gn/T/pip-install-h24dhrko/lle7ch/setup.py", line 22, in <module>
        install_requires=_requires_from_file('requirements.txt'),
      File "/private/var/folders/3j/3yb6rb916p70gz71129z3y7h0000gn/T/pip-install-h24dhrko/lle7ch/setup.py", line 7, in _requires_from_file
        return open(filename).read().splitlines()
    FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/3j/3yb6rb916p70gz71129z3y7h0000gn/T/pip-install-h24dhrko/lle7ch/

というエラーが出てしまった.そこで,ちゃんと読んでみたところ,MANIFEST.in作成が重要であるそうだ.つまり, MANIFEST.in に以下のように書けば良い.

include requirements.txt

こうすれば,パッケージングの際1requirements.txt も含まれる.


  1. python setup.py sdist