2

に動的に何かを追加する Python プログラムがありますsys.path。正常に動作しますが、Python プログラムを .zip ファイルとして配布し、実行したいと考えています__main__.py

sys.pathzip ファイルからエントリを追加できますか? 少し調べたところ、pkgutilドキュメントが見つかりましたが、何が機能するのかわかりません。

注: Windows用のインクルードとファイルsys.pathに追加する必要があるもの。.pyd.dll

4

1 に答える 1

3

私はあなたの質問を完全に理解しているとは言えませんが、とにかくそれに答えることに亀裂があります...

残念ながら、次の場所に追加することで zipfile からインポートできますがsys.path

sys.pathモジュールとパッケージの検索場所を提供する文字列のリストが含まれています。これは、PYTHONPATH 環境変数およびその他のさまざまなインストール固有および実装固有のデフォルトから初期化されます。のエントリはsys.path、ファイル システム上のディレクトリ、zip ファイル、siteおよび場合によっては URL やデータベース クエリなどのモジュールを検索する必要があるその他の "場所" (モジュールを参照) に名前を付けることができます。には文字列とバイトのみが存在する必要がありますsys.path。他のすべてのデータ型は無視されます。バイト エントリのエンコードは、個々のパス エントリ ファインダによって決定されます。

ソース: http://docs.python.org/3/reference/import.html#path-entry-finders

...ファイルには拡張さ.pydれません:.dll

ZIP アーカイブには任意のファイルが存在する可能性がありますが、インポートできるのはファイル.pyと ファイルのみです。動的モジュール ( ) の ZIP インポートは許可されていません。.py[co].pyd.so

ソース: http://docs.python.org/3/library/zipimport.html

この制限を回避する方法を知りません。

于 2013-07-24T01:59:28.860 に答える