0

Vizard を使用して、Python スクリプトから .exe ファイルを作成しています。.exe ファイルの隣にあるフォルダーを作成するには、このスクリプトが必要です

if getattr(sys, 'frozen', False):
    logging.warning('Application is exe')
    loggingPath = os.path.dirname(sys.executable)
    logging.warning(os.getcwd())
elif __file__:
    loggingPath = os.path.dirname(__file__)
    logging.warning('Application is script')
    logging.warning(os.getcwd())

if not os.path.exists(loggingFolder):
    logging.warning('Directory not existing... creating..')
    os.makedirs(loggingFolder)

IDE から実行すると正常に動作しますが、exe ファイルでは、Windows/Users/Temp/randomfoldername の Appdata フォルダーにデータがスローされます。

また、exeにパックされている場合でも、常にアプリケーションはスクリプトです。

誰かがここで私を正しい方向に向けることができますか? 前もって感謝します

4

2 に答える 2

1

sys モジュールには属性がないためfrozen、最初の if ステートメントは常に を返しFalseます。

sys.executablePythonインタープリターバイナリへのパスを提供します。Windows の場合、ファイルのパスpython.exe。これが必要な理由がわかりません。

実行中のファイルがファイルであることを確認したい場合は、その.exe隣にフォルダーを作成します。ファイル名が.exe?で終わるかどうかを確認する方が簡単な場合があります。

if __file__.endswith('.exe'):
    loggingFolder = os.path.join(os.path.dirname(__file__), 'foldername')
    if not os.path.exists(loggingFolder):
        os.makedirs(loggingFolder)
于 2016-05-13T12:52:29.617 に答える
0

実行時にフォルダーを作成するだけの場合、別の (おそらく簡単な) 方法は、バッチ ファイル内から vizard プログラムを実行し、最初にバッチ ファイル内にフォルダーを作成することです。

たとえばcreate run_viz_prog.bat、次のようなコンテンツ:-

mkdir new_folder
my_viz_prog.exe
于 2016-05-17T10:35:03.320 に答える