1

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で「余分」を避ける必要があるようです。

4

1 に答える 1