2013-07-23 18 views
7

自己作成パッケージを置く正規の場所はありますか?私自身の検索は、where to put version-independent pure Python packagesおよびSO question for the canonical location under Linuxについてのブログ投稿を作成しましたが、私はWindowsで作業しています。自分で書いたPythonパッケージはどこに置くべきですか?

私のユースケースは、どのようなサイトパッケージでも、セッションを開始しても、IPythonセッション中に自分のパッケージをインポートできるようにすることです。 Matlabでは、例えば対応するフォルダは単にC:/Users/ojdo/Documents/MATLABです。

import mypackage as mp 
mp.awesomefunction() 
... 
+0

ファイルを 'C:\ PythonXX \ Lib \ site-packages'に貼り付けるのが好きです。これは、追加の設定を必要としないという利点があります。デフォルトでは、ディレクトリは 'sys.path'にあります。 – bbayles

+4

[documentation](http://docs.python.org/2/install/#how-installation-works)を見ましたか?また、PYTHONPATH環境変数を使用することもできます([docsの別のセクション](http://docs.python.org/2/install/#modifying-python-s-search-path)を参照)。 –

答えて

6

を皮肉なことに、私の最初の検索結果でも説明されていましたが、すべてのバージョン(イン)依存サイトパッケージ用語で難読化されました。

元の質問への回答

私は私の自己書かれたパッケージ(「デフォルト」のように)標準的な場所があったかどうかを知りたかったです。そして、それが存在します。このフォルダがあることuser scheme package installation状態に

>>> import site 
>>> site.USER_SITE 
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages' 

ドキュメント - それが存在する場合 - 自動的にsys.pathに追加されます。独自のパッケージのための

カスタムディレクトリ

  1. 例えば、どこかのディレクトリを作成します。 C:\Users\ojdo\Documents\Python\Libs
  2. ファイルsitecustomize.pyをPythonインストールのsite-packagesフォルダに追加します。つまり、C:\Python27\Lib\site-packages(すべてのユーザー用)またはsite.USER_SITE(1人のユーザー用)です。
  3. このファイルは、次のコードで満たされている:

    import site 
    site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs') 
    
  4. ほら、新しいディレクトリが自動的にすべての(I)Pythonのセッションでsys.pathに追加されます。自動的にパイソンのすべての起動時にインポートされたパッケージsiteも、カスタムパッケージパスの変更のためのパッケージsitecustomizeをインポートしようとします:。どのように動作

この場合、このダミーパッケージは個人用パッケージフォルダをPythonパスに追加するスクリプトで構成されています。

import setuptools 

setuptools.setup(name='mypackage') 

次に、あなたのpythonのインストールのsite-packagesにあなたのパッケージを偽のインストール:あなたが好きですが、少なくとも、あなたのパッケージ最小限setup.pyファイルを与え、すぐにパッケージの外にしたいところはどこでもあなたのパッケージのソースは

+0

これは一度可能です。私は* "今すぐあなた自身の答えを受け入れることができます" *を受け取ります。 – ojdo

+0

注 - pythonドキュメントにはエラーがあります。これらのドキュメントは不正な形式です。パッケージは "modules:userbase/lib/pythonX.Y/site-packages"にありますが、site.USER_SITEのディレクトリ(3.5用)は〜/ Library/Python/3.5/lib/python/site-packagesです。 ' - XYはそこにないことに注意してください。私のsite.USER_BASEは '〜/ Library/Python/3.5'です。 –

3

私は、このために自宅のスキームを使用したい:twoadditionalリンクのおかげで、私は私の質問に意図した答えが、また、私の解決策ではないだけを見つけた

http://docs.python.org/2/install/#alternate-installation-the-home-scheme

+0

ドキュメントへのポインタありがとう。より完全にそれを読んで、 'site.USER_BASE'プロパティを見つけました。私はなぜそれが "顕著に"言及されていないのだろうかと思います。 – ojdo

7

場所実行して:

python setup.py develop 

このegg除き、python setup.py installを実行しているなどの多くは、ちょうどあなたのソースツリーを指しているので、あなたは、電子後installする必要はありません非常にソースコードの変更。

最後に、あなたはあなたのパッケージをインポートすることができるはずです。

python -c "import mypackage as mp; print mp.awesomefunction()" 
1

私は、同じ質問があったが、あなたの答えは非常に有用です。

http://python-packaging.readthedocs.io/en/latest/minimal.html

それは私が想像して(独自のコードをパッケージ化し、適切にそれをローカルにインストールする方法の最小限の例ですが、これは何を次のとおりです。 は少しを追加するには、私は私には便利です。この例に出くわしましたあなたが実際に欲しい)、またはPyPI上で配布する。物事は、Pythonのやり方でやっています。

+0

コンテンツと 'joke'の両方でUpvoted。それから...「ピップサーチおかしな」 – ojdo