Python - ValueError:在非包中尝试相对导入

时间:2017-10-19 22:28:57

标签: python-2.7

这是我的目录结构。

PyCharm
    Python
        PRD
            _AppFunc
                DbUtils.py
                __init__.py

            _AppCode
                DataExtract.py
                __init__.py

            __init__.py

        __init__.py

我的PYTHONPATH设置为C:\ Users \ username \ Desktop \ PyCharm \ Python \ PRD

在DataExtract.py中我尝试使用

导入DbUtils.py
from .._AppFunc import DbUtils

收到此错误......

Traceback (most recent call last):  
File "C:\Users\username\Desktop\PyCharm\Python\PRD\_AppCode\DataExtract.py", line 36, in <module> from .._AppFunc import DbUtils   
ValueError: Attempted relative import in non-package

如果我将DBUtils.py移出_AppFunc文件夹并在PRD下,它可以正常工作。 但我打算将它保存在一个单独的文件夹中以限制访问。

我已阅读与此相关的大多数stack overflow threadspython doc on intra-package-references但无法让它运行。

我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

这是有用的......

  1. PYTHONPATH应设置为root。对于有问题的目录结构,它是C:\Users\username\Desktop\PyCharm
  2. 从root开始的结构中的每个文件夹和子文件夹都应该成为一个包。粘贴粘贴__init__.py__init__.pyc
  3. 通过完整路径引用将模块导入主文件中。对于这个问题,它是Python.PRD._AppFunc import DbUtils