twine 업로드 시 "HTTPError: 400 Bad Request ..." 오류
이상하군요, 동일한 setup.py로 패키징한 whl 파일을 윈도우에서는 정상적으로 업로드하는데, 리눅스 환경에서는 다음과 같은 식으로 오류가 발생합니다.
$ twine upload dist/...[생략]...-none-any.whl
...[생략]...
Uploading distributions to https://upload.pypi.org/legacy/
Uploading ...[생략]...-none-any.whl
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4.64M/4.64M [00:03<00:00, 1.50MB/s]
Error during upload. Retry with the --verbose option for more details.
HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/
The description failed to render for 'text/x-rst'. See https://pypi.org/help/#description-content-type for more information.
이에 대한 확인을 twine 도구로 할 수 있습니다.
$ twine check dist/...[생략]...-none-any.whl
Checking dist/jennifer_python-5.3.0.15-py3-none-any.whl: FAILED
`long_description` has syntax errors in markup and would not be rendered on PyPI.
line 12: Warning: Title underline too short.
패키지 사용법
----------
오류도 아닌, 경고에 불과한 것을 "FAILED" 처리했군요. ^^; (그러니까 윈도우 버전의 twine에서는 저런 검증 과정을 기본적으로 제공하지 않고 있었던 것입니다.) 암튼, 원인은 "패키지 사용법"의 글자보다 그 하단에 있는 "----------" 글자가 더 적기 때문입니다. 대충 아래와 같이 길이를 키워주시면 오류가 발생하지 않습니다.
패키지 사용법
------------------
혹은 아래와 같은 오류가 발생한다면?
ERROR `long_description` has syntax errors in markup and would not be rendered on PyPI. line 114: Warning: malformed hyperlink target.
해당 line(위의 경우 114)에 가봤더니 다음과 같은 내용이 있는데,
.. _mysqlclient >= 2.0.3:: https://github.com/PyMySQL/mysqlclient-python
실수로 "2.0.3:: "과 같이 2개의 "::"을 넣었기 때문에 발생한 것입니다. 따라서 "2.0.3:"으로 바꾼 후 실행하면 잘 됩니다. ^^;
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]