簡體   English   中英

Python相對導入“最高級別”

[英]Python Relative Imports “Above Top Level”

這是我的目錄結構

src\
  dirCode\
    dirSubCode\
      test.py
  Django\
    DjangoApp\
      Home\
       views.py

我正在從views.py中嘗試從test.py導入一個類(稱為Main)。 test.py中的行很簡單

from dirCode.dirSubCode.test import Main

並且在嘗試運行服務器時出現ModuleNotFoundError。 我打印出os.sys.path,第二個條目指向“ src \\”,而第一個條目只是“''。 因為這不是我需要調用“外部”代碼的唯一應用程序,所以我試圖避免硬編碼

sys.path.insert(0,'path\to\src\dirCode\dirSubCode\')

如果那甚至行得通。 我嘗試瀏覽文檔,查看其他StackOverflow問題( 從subfolder導入模塊 ),等等。但是我對此卻一無所知。 我嘗試進入src \\ Django \\ DjangoApp \\ Home目錄,僅運行python控制台,只是嘗試導入該類,但這給了我同樣的錯誤。

我遇到的一個奇怪的發展是,當我嘗試從Anaconda Prompt運行它時(是的,我正在運行Windows),它不起作用,但是當我在PyCharm中運行文件時,它卻起作用了。 如果這有助於提供有關可能發生的情況的一些見解,我將不勝感激。

正確的方法是引入一個共享軟件包,您可以將其安裝到每個Web應用程序的virtualenv中。 從實際發行版,還是通過使用

python setup.py開發

在共享包中的表單中,您實際上是在venv中創建一個符號鏈接,該符號鏈接可讓您直接導入。

一個更現代,更簡單的版本是

pip install -e。

在圖書館里面。 查看Python setup.py開發與安裝

我相信您需要設置PYTHONPATH變量,該變量用於設置模塊的默認搜索路徑。

https://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH

根據python docs,語法類似於...

https://docs.python.org/3.6/using/windows.html#excursus-setting-environment-variables

要臨時設置環境變量,請打開命令提示符並使用set命令:

 C:\\>set PATH=C:\\Program Files\\Python 3.6;%PATH% C:\\>set PYTHONPATH=%PYTHONPATH%;C:\\My_python_lib C:\\>python 

Pycharm(在“運行/調試”配置中)將其選中時進行設置(這是默認設置)。

pycharm圖片

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM