py2exeを使用してWindows .exeにコンパイルするPythonプログラムがあります。 Inno Setupを使用して、Windowsインストーラを作成します。Windows上でPythonのimport()パスにスクリプトの作業フォルダを追加する最も良い方法は?
私のプログラムの性質は、後で__import__()
ステートメントを使用してインポートされるプラグインを使用するようなものです。これらのプラグインは、自分のプログラムの.exeファイルが存在する場所のサブフォルダとして 'plugins'フォルダにあります。ユーザーがWindowsを介して、プログラムを起動したとき、これはうまく働いていなかった、しかし
sys.path+= ['.']
:
は今、プログラムは、プラグインを見つける持っている、それは、以前の私のファイルの先頭にsomwhere次のステートメントを持っていました明らかに作業フォルダが(.exeがどこにあるかではなく)スタートメニューに設定されていたためです。だから'.'
は私が望むものに解決しなかった。
__import__()
文はまた、(argv[0]
は、実行可能ファイルのフルパスであるため).exeファイルがあるフォルダに見えるように、私は、次のようにステートメントを変更することにより、それを修正:
sys.path+= [os.path.dirname(sys.argv[0])]
しかし、正しい解決方法を選んだかどうかはわかりません。特に、私のプログラムはクロスプラットフォーム(Windows、OSX、Linux)を意図しており、sys.argv documentationはargv [0]について、これがフルパス名かどうかに依存するオペレーティングシステムであると言います。
私はこれを別の方法で解決すべきですか、それとも私のアプローチはOKですか?
__私のWindowsでは '__file__'が返されるので、確信できません。exeプログラム: 'C:¥Program Files(x86)¥myprogram¥myprogram.exe¥core.pyc'。そうすれば、OSX、Linux、またはターミナルから実行しているときでさえも、返されたパス( 'core.pyc'と' myprogram.exe')の2つのレベルを取り除く必要があります。 – Rabarberski
次に、最高の解決策は@SpencerRathbunによって設定ファイルの言及です – Nilesh