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

我可以看到两个干净的解决方案。

  1. 为此,您的 lib 必须与Distutils兼容(有一个setup.py)文件。如果是这样,那么您可以简单地pip使用e-标志安装它。做就是了:

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

    这将以可编辑模式安装库,这意味着该库不会安装到site-packages但会在那里创建一个 egg 符号链接。这意味着您对 lib 中的文件所做的任何更改都将自动在您的环境中生效。

  2. 我认为这并不像第一个建议那样干净。只需将 lib 添加到 Django 的 PATH 中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 回答