2011-12-22 17 views
2

LinuxとWindowsの両方で使用されるpythonパッケージにproperties/iniファイルを含めるにはどうすればよいですか?プロパティファイル(iniファイル)はPythonパッケージに含まれていません

私はのようなコードを使用してそれにアクセスできるように、プロジェクトフォルダの下にiniファイルを配置することによって、Pythonパッケージを作成してみました:

File = open("props.ini", 'r') 

それから私としては.tar.gzファイルに私のパッケージを展開こうした:

$ python setup.py sdist 

それから私は(Linuxマシンで)パッケージをインストールします。

$ sudo pip install package_name.tar.gz 

/usr/local/bin/myScript 

しかし、私は私の.iniファイルを取得しない:

/usr/local/lib/python2.7/dist-packages/package_name/*.py 

が、私は私のスクリプトは、ここにプログラムを開くために得る:私はここに私の.pyファイルを取得します。

+0

私も試してみました:package_data引数を使用して210 (誰かがpython 2.7を持っていない、またはLinux以外のマシンを使用していると問題が起きる可能性があるので、この行にディレクトリを指定することをためらっています) これは私の.iniファイルをここに置きます: /usr/local /props.properties 私のプロパティファイルはパッケージの残りの部分には含まれていないので、私のプログラムはそれを見つけたりアクセスしたりできません。 – Ari

答えて

2

これを行う1つの方法は、設定ファイルをソースコードの下のディレクトリに置くことです。

たとえば、ソースコードがsrcディレクトリの場合、設定ファイルをsrc/configに追加できます。その後、あなたが使用して設定ファイルにアクセスすることができsrcディレクトリ内の任意のコードのために:

config_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), 
           'config', <filename>) 

をコードが配布されたときに同じディレクトリ構造を維持するために、setup.pysetup機能は、これらの新しいファイルについて知っておく必要があります DATA_FILES = [( ''、[ 'プロジェクト/ props.properties'])]、:私のsetup.pyファイルに次の行を追加し :

setup(
... 
package_data={'src': ['config/*',]}, 
... 
) 
+0

あなたのコメントを読んだ後、あなたの言ったことをあなたの命名規則で正確にやってみました。そして、私はプログラムを実行しようとしました(パッケージを作る前に)。結果: IOError:[Errno 20]ディレクトリではありません: '.../Project/myFile.py/config/props.ini' – Ari

+0

もちろん "myFile.py"、 "config"、 "props.ini" "はディレクトリではありません(ディレクトリではありません)。 os.path.joinとは何ですか? – Ari

+0

私の返答を編集しました。今回はもっときれいだと思う。 – jcollado

関連する問題