1つのPythonスクリプトの変数を他のPythonスクリプトで使用しますか?


9

すべてのデータソースの場所を含む変数を含む単一のpythonファイルを設定したいと思います。これは他のすべてのスクリプトで使用され、データソースが変更されたときに、1つのファイルを編集するだけで済みます。

私のData_sources.pyは次のようになります。

BC_BEC = "Database Connections\\BC.sde\\FOREST_BC.BC_Eco\\BC.BC_BEC"
BC_TFL = "Database Connections\\Forest_BC.sde\\BC.BC_Admin\\BC.TFL_Boundary"

等々...

他のすべてのスクリプトでData_sources.pyのこれらの変数をロードまたはアクセスするにはどうすればよいですか?


このような質問は、GISのPythonモジュールまたはサイトパッケージではなく純粋なPythonであり、通常はStack Overflowで調査/質問する必要があります。
PolyGeo

回答:


10

Distutilsを使用してパッケージ化することにより、実行するすべてのPythonスクリプトからインポート可能なインストール済みのPythonモジュールを作成できます。

Pythonドキュメントから:

ファイルfoo.pyに含まれるfooというモジュールを配布するだけの場合、セットアップスクリプトは次のように簡単です。

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

あなたはそれからそれをインストールすることができます

python.exe setup.py install

そして、あなたは任意のPythonスクリプトからfooをインポートすることができます、またはあなたは使うことができます

python.exe setup.py bdist_wininst

モジュールのWindowsインストーラーを作成して、他のコンピューターに配布できるようにします。


「Byte of Python」の本には、angインポートモジュールを使用してビルドする例を示した素晴らしい章があります。
jonatr

私はこのモジュール作成の提案を気に入っていますが、それらについてはあまり詳しくありません。"python.exe setup.py install"コマンドはfoo.pyへのポインターを使用しますか、それとも現在foo.pyにあるものを使用しますか?後でfoo.pyを変更しても、モジュールはまだ最新ですか?ありがとう。
ユーザーエラー

私もその本を探します。ジェイソンとジョナトルの助けをありがとう。
ユーザーエラー

語彙の修正:より正確なpythonの単語は「パッケージ」です。これは、ドキュメントの検索に役立ち、パッケージとモジュールがpythonの世界では2つの異なるものであることを明確にします。また、提案/ヒント:(のsetup.py develop代わりにinstall)行う場合、パッケージの編集は、再インストールを必要とせずに、保存されるとすぐに取得されます。(これはおそらく、元の質問者のdata_sources.pyに適しています。)
Dan S.

3
ユーザーはインポート方法を尋ねるだけではありませんか?以下に答えてください。
sgillies 2011年

12

Data_sources.pyと同じディレクトリにある任意のスクリプトに、

from Data_sources import BC_BEC, BC_TFL

頂点で。変更しない限り、作業ディレクトリは常にpythonパスの先頭にあるため、これは機能します。

>>> import sys
>>> sys.path[0] == ''
True

参照:http : //diveintopython.org/getting_to_know_python/everything_is_an_object.html#d0e4550

より広くデータを共有したい場合は、他の人が提案したようにパッケージ化できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.