2017-01-28 5 views
0

Py2Exeを使用してスクリプトをコンパイルしようとしています。これはsetup.pyファイルです。あなたが見ることができるように、私は「variables.py」としてDATA_FILESを入れているとのexeファイルに変わりは「Autoreply_SOURCE.py」Py2Exe variables.pyファイル

import py2exe 
import certifi 
print ("Location", certifi.where()) 
from distutils.core import setup 

Mydata_files = ['cacert.pem', 'variables.py'] 

setup(
    console=['Autoreply_SOURCE.py'], 
    data_files= Mydata_files, 
    options={ 
      "py2exe":{ 
        "packages": ["tweepy", "json", "winsound",], 
        "bundle_files": 1, 
        "compressed": True, 
      } 
    } 
) 

あるvariables.pyに実行されるように、これは、正常に動作し、 .exeが実行されますが、コンパイル後に値が固定されます。これを克服する方法はありますか?ユーザーはメインスクリプトを実行できるはずですが、variables.pyを変更できる必要があります。

おかげ

答えて

0

あなたが変更することはできませんので、あなたは、ファイルvariables.pyがコンパイルされ、(あなたがlibrary.zipを開いた場合は、内部variables.pycが表示されます)のモジュールとしてzipファイルに追加されますAutoreply_SOURCE.pyimport variablesを使用している場合、そのコンパイル後の内容あなたが言ったように、 "値は固定されています"、あなたはこの動作を変更する可能性はありません。

代わりに、importステートメントを置き換えて、モジュールを動的にインポートすることをおすすめします。これを行うと許可ユーザーをvariables.pyを編集することは非常に危険なことができ、コードが実行されるためをお勧めしていないことを

# import variables (delete or comment this line) 
with open('variables.py') as module: 
    exec(module.read()) 

注ので、私はあなたが別で、この問題を得たことをお勧め:私はこれを意味します方法。 1つの簡単なオプションは、設定ファイル(JSON形式など)を作成し、ユーザーが編集したい特定の値だけをロードすることです。例えば

import json 

with open('config.json') as config_file: 
    user_data = json.load(config_file)