[Python] PyPIにアップロードするときに注意すること

 PyPIにあげることはできたけど、PyPIのプロジェクトページに画像やREADMEがちゃんと表示されないことがちょくちょくあったのでまとめました。

PyPIの画面に画像が表示できない


 普通にプロジェクト内にある画像をREADME.mdで<img src=”./image.jpg” />みたいに記載して、README.mdの内容をlong_descriptionに指定しても、画像は表示されません。

 一番楽なのはGithub上の画像を見せることです。こんな感じに指定すると表示できます。

<img src="https://raw.githubusercontent.com/<Githubユーザー名>/<リポジトリ名>/<ブランチ名>/画像ファイルへのパス"

 私の作ってるツールですが、こんな感じでちゃんと表示できます。

https://pypi.org/project/labelcls/

PyPIページで表示するREADMEでmarkdownが表示できない


 PyPIのページにREADMEを表示するために、setup.pyのlong_description_content_typeで”text/markdown”を指定し、README.mdを読み込んでlong_descriptionに指定するパターンが多いと思います。

setup(
...
  long_description=open(path.join(here, 'README.md'), encoding='utf-8').read()
  long_description_content_type="text/markdown",
)

 ただ、twine checkだったりtwine uploadで以下のWarningが表示され、PyPI上にちゃんとREADMEの内容が表示されないという現象が起きたりします。

long_description has syntax errors in markup and would not be rendered on PyPI.

 また、これが起きると以下のWarningもなぜか出ることあります。ちゃんとlong_description_content_type指定してるじゃん。。。

warning: `long_description_content_type` missing.

 これはWindows特有っぽいですが、これで治ります。

setup(
...
  long_description=open(path.join(here, 'README.md'), encoding='utf-8').read().replace("\r", "")
  long_description_content_type="text/markdown",
)

 参考までに私のリポジトリあげるのでsetup.pyの書き方など参考になればと思います。

https://github.com/pei223/labelcls

コメントを残す

メールアドレスが公開されることはありません。