python-markdown を pyinstaller で動作させようとしているときに問題が発生しています。test.py というファイルに問題を示す次のコードがあります。
import markdown
testMarkdown = "blahdy blah blah"
print(markdown.markdown(testMarkdown))
print(markdown.markdown(testMarkdown, extensions=["extra"]))
python3 を使用して実行すると、必要に応じて次のようになります。
(venv) C:\Users\madgrizzle>python3 test.py
<p>blahdy blah blah</p>
<p>blahdy blah blah</p>
次のように pyinstaller を実行します。
(venv) C:\Users\madgrizzle>pyinstaller test.py
結果のコードを実行すると、次のようになります。
(venv) C:\Users\madgrizzle\dist\test>test
<p>blahdy blah blah</p>
Traceback (most recent call last):
File "test.py", line 5, in <module>
File "lib\site-packages\markdown\core.py", line 390, in markdown
File "lib\site-packages\markdown\core.py", line 100, in __init__
File "lib\site-packages\markdown\core.py", line 126, in registerExtensions
File "lib\site-packages\markdown\core.py", line 166, in build_extension
File "importlib\__init__.py", line 126, in import_module
File "<frozen importlib._bootstrap>", line 985, in _gcd_import
File "<frozen importlib._bootstrap>", line 968, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
ImportError: No module named 'extra'
[14432] Failed to execute script test
私は以下を使用して再構築しようとしました:
(venv) C:\Users\madgrizzle>pyinstaller --hidden-import="markdown.extensions.extra" test.py
しかし、同じエラーメッセージが表示されます。
マークダウン拡張機能を含めるために必要な特別なものはありますか?
追加情報:
「余分な」拡張子が問題を引き起こしている可能性があります。https://python-markdown.github.io/extensions/extra/によると、「extra」は、fenced_code とテーブルを含む複数の拡張機能のコンパイルです。テーブル拡張機能を単独で使用しようとすると、次のようにフルネームを使用すると、pyinstaller が機能します。
markdown.markdown(testMarkdown, extensions=["markdown.extensions.tables"])
「markdown.extensions.tables」を使用する代わりに「markdown.extensions.extra」を使用し、pyinstaller を使用してコンパイルして実行すると、「fenced_code」モジュールが見つからないという応答が返されます。基本的に、pyinstallerで「余分」を避ける必要があるようです。