2009-07-30 15 views
4

Python標準ライブラリ全体を自分のプログラムにインポートする方法が必要です。Python標準ライブラリ全体をインポートする

これは悪い考えですが、py2exeは標準のライブラリ全体を自分のプログラムでパッケージ化するので、私のユーザは自分が与えたシェルでそれをインポートすることができます。

これを行う簡単な方法はありますか?

ボーナスポイント:このアクションは、私がサイトパッケージにインストールしたパッケージとPythonに付属していないパッケージをインポートしないことを望みます。しかしながら、これは重要ではない。

+1

何がありますか?あなたはすべてを事前にインポートすることによって起動するシェルを書いていますか?それにはどのようなユースケースがありますか?ユーザーが "import this"というダース文字を入力して保存するには? –

+1

何もあらかじめインポートしていません。しかし、ユーザがstdlibから読み込むことができるようにするためには、私のプログラムでそれらをインポートする必要があります(または、私がそれらをインポートしているように見える)ので、py2exeは私がそれらを必要としていることを知り、実行可能ファイルでパッケージ化します。 –

答えて

2

ねえ、私はちょうど何かを考えた:私だけSTDLIB内のすべてのモジュールのリストを必要とし、その後、私は自動的にこのように、「手動」にそれらのそれぞれをインポートPythonスクリプトを生成します:

import re 
import math 
import time 
# ... 

それを私のプログラムに含めてください。

私が今必要とするのは、stdlibのすべてのモジュール/パッケージを簡単にフォーマットしたリストです。今私はそれをどうやって得るのですか?

UPDATE:

私はこのようなリストを持って:私のIDEに出力を貼り付け

import pkgutil 
stuff = [thing[1] for thing in pkgutil.iter_modules()] 
stuff.sort() # To make it easy to look through 
print(stuff) 

は次にコピーし、:私はIDLEで走った後、仮想マシン上のPython 2.6をインストール

if False: 
    import re 
    import email 
    import time 
    # ... 

私のプログラムにインポートするPythonモジュールに書き込むための小さなスクリプトを作成しました。

py2exeはstdlib全体をパックします。

UPDATE:

私はこれを行うパッケージを作成しました。私はここでそれをアップロードするだろうが、私は任意のアップロードボタンが表示されていないので、あなたは私のプロジェクトフォルダをそれを得ることができます:それはフォルダsrcで、パッケージはalmostimportstdlibと呼ばれていますし、それが文書化されています

http://github.com/cool-RR/PythonTurtle/tree/master

+0

http://docs.python.org/modindexhtml コピー&ペーストと書式を少し使いますが、それは一度の作業です:-) – fortran

+1

私はそれを個人的に動的に生成します。私が上で述べたことを見てください:同じ方法を使って、モジュールをリストしてファイルをインクルードして生成することができます。手動で1つを保守するよりも良いでしょう。 – jkp

1

すべてのPython標準ライブラリからzipファイルを作成し、プログラムの起動時にsys.pathに追加しました。

here(放棄されたプロジェクト)

+0

V良いアイデア。 py2exeを使用してリソースとしてバンドルして、アプリケーションがロードされた後にパスに追加できるはずです。少なくともPyInstallerでこれを行うことができます。 – jkp

関連する問題