Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入位于项目根目录之上的模块_Python_Django - Fatal编程技术网

Python 导入位于项目根目录之上的模块

Python 导入位于项目根目录之上的模块,python,django,Python,Django,我正在使用以下结构: 假设我在lib目录中有一些通用函数 foo.com < -- site root lib/ django_root/ < -- project root (checked into Github) 他给了我 ValueError: Attempted relative import beyond toplevel package 我可以看到两种干净的解决方案 要使其工作,您的库必须兼容(具有setup.py)文件。如果有,那

我正在使用以下结构:

假设我在lib目录中有一些通用函数

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

ValueError: Attempted relative import beyond toplevel package

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

  • 要使其工作,您的库必须兼容(具有
    setup.py
    )文件。如果有,那么您只需使用带有标志的
    pip
    安装它即可。只要做:

    pip install -e /full/path/to/foo.com/lib/
    
    这将以可编辑模式安装库,这意味着库不会安装到
    站点软件包中,而是在那里创建一个egg符号链接。这意味着您对库中文件所做的任何更改都将在您的环境中自动生效

  • 我不认为这是接近清洁的第一个建议,这将工作。只需将库添加到Django的
    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)
    # ...
    

  • lib
    路径添加到
    PYTHONPATH
    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)
    # ...