2017-10-19 49 views
0

這是我的目錄結構。Python - ValueError:嘗試在非包中的相對導入

PyCharm 
    Python 
     PRD 
      _AppFunc 
       DbUtils.py 
       __init__.py 

      _AppCode 
       DataExtract.py 
       __init__.py 

      __init__.py 

     __init__.py 

我的PYTHONPATH設置爲C:\ Users \用戶名\桌面\ PyCharm \ Python的\珠三角

在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文件夾和珠三角下,它工作正常。 但我打算將其保存在單獨的文件夾中以限制訪問。

我已閱讀最多stack overflow threads與此相關的和python doc on intra-package-references,但無法讓它運行。

我該怎麼辦呢?

回答

0

這裏是什麼工作?

  1. PYTHONPATH應設置爲根。對於有問題的目錄結構,它是C:\Users\username\Desktop\PyCharm
  2. 從根開始的結構中的每個文件夾和子文件夾應作爲一個包。複製粘貼__init__.py__init__.pyc
  3. 該模塊通過完整路徑引用導入到主文件中。對於這個問題,它是Python.PRD._AppFunc import DbUtils