2017-12-21 25 views
0

他の言語(C++ClojureTypeScript、多分その他)についても同様の質問がありましたが、まだPythonの回答を探しています。同じ名前空間を共有する複数のファイルでPythonスクリプトを分割する

importglobalをPythonで使用することに関連する多くの類似の質問がありますが、関連する回答が私のニーズに合っていません。大きなファイルを小さなファイルに分割して、異なる名前空間を処理したり、グローバル変数を管理したりすることなく、同じプログラムの異なるバージョンのコードの一部を簡単に変更/再利用したいだけです。

実行したいPythonファイルを実行時にスクリプトとマージするのが簡単なことですイラスト付き

、私は何をしようとしていますほとんど同じで、いくつかの大きなファイルから起こっている:

big_file_v1.py

## First part 
# Hundreds of code lines to define things, make computations... 

## Second part 
# More code to do a few additional things 

big_file_v2.py

## First part 
# Exactly the same first part as in big_file_v1.py 

## Second part 
# A lot of small differences compared to big_file_v1.py 

...いくつかの小さなファイルには、大部分が変更を必要としませんこの第二で

myprog_v1.py

include first_part_common_to_both_versions.py 

include second_part_v1.py 

myprog_v2.py

include first_part_common_to_both_versions.py 

include second_part_v2.py 

:私だけが異なるバージョンのすべてにわたって共有したいの変更を必要とするエーションまたは場合、includeのようなコマンドを使用して、私は瞬時にで行われた変更を共有することができます私のプログラムのバージョン1と2の間のと私はちょうど私が新しい修正をしたい/別の新しいバージョンを作成したい場合は小さいファイルsecond_part_v2.pyを変更/コピーする必要があります。

質問:これを行う方法include Pythonで?

良いソフトウェア開発の慣行に関する議論を避けるために、私は科学的な質問を解決するためのツールとしてPythonを使用しています。

+0

私はdownvoteの説明をしたいと思います。 Pythonで? – Falken

+0

としてmu私たちは良い質問をしたいと思っています。だれかがそれを間違って説明しなければならない。一方、[MCVE](https://stackoverflow.com/help/mcve)によれば、あなたは新しいものです。あなたの問題を具体的な例を使って親切に説明することができれば、それは私たちがそれを理解するのに役立つでしょうあなたはすぐに答えを得ることができます。私はこれが人があなたを落胆させた理由かもしれないと思う。私はあなたの質問を編集することを希望して、あなたのためにそれを返信しました。どうもありがとう。 – stucash

+0

分離したファイルごとにメインファイルの 'from other_file import *'を実行しますか? – Graipher

答えて

0

は、execまたはexecfileを見ることもできます。:

「Pythonのexec文は 重要な違いで、import文に似ています。exec文は 現在の名前空間内のファイルを実行exec文。 "exec文"のセクションでこれを見ていきます

+0

非常に良い提案をしてくれてありがとうございますが、[この質問](https://stackoverflow.com/q/436198/9094516)を考慮すると、Python 3の新しいexecfileは少し不便です。特に、デバッグが難しくなり、実行されたファイルの行番号(前のリンクのコメントの1つを参照)。とにかく試してみて、exec()が十分に実用的であれば答えを受け取ります... – Falken

関連する問題