4

私は次の構造で遊んでいます:

http://timmyomahony.com/blog/2012/11/09/general-django-project-structure-or-folder-layout/

libディレクトリにいくつかの汎用関数があるとします

foo.com     < -- site root
    lib/
    django_root/     < -- project root (checked into Github)

次のようなインポート:

from ... lib import my_lib

私に与えている

ValueError: Attempted relative import beyond toplevel package
4

1 に答える 1

1

2 つのクリーンなソリューションが表示されます。

  1. これが機能するためには、ライブラリがDistutilsと互換性がある ( があるsetup.py) ファイルである必要があります。そうであればpipe-フラグを付けて簡単にインストールできます。ただ行う:

    pip install -e /full/path/to/foo.com/lib/
    

    これにより、ライブラリが編集可能モードでインストールされます。つまり、ライブラリはインストールされませんがsite-packages、そこに卵のシンボリックリンクが作成されます。つまり、ライブラリ内のファイルに加えた変更は、環境内で自動的に有効になります。

  2. これは、これによる最初の提案ほどクリーンではないと思います。Django の PATH に lib を追加するだけmanage.pyです。

    import os, sys
    root_path = os.path.abspath(os.path.join(__file__, '..', '..'))
    lib_path = os.path.join(root_path, 'lib')
    sys.path.insert(0, lib_path)
    # ...
    
于 2013-05-17T06:08:57.300 に答える