簡體   English   中英

如何在Python中使用頂級路徑導入?

[英]How to import using a top level path in Python?

我正在開發python框架,並希望基於頂級包(項目名稱)進行導入。 用戶將通過復制整個框架並在其中編寫自己的模塊來使用該框架。

我當前的結構如下所示:

myapp/
  config.py
  docs/
  framework/
    main.py
    utils.py
  file.py
  lib/
    some_module.py
  unit_tests/
    test_utils.py

我希望能夠通過以下方式在lib和unit_tests中的python文件中使用以下導入:

from myapp.framework import utils

有沒有簡單的方法可以做到這一點? 我曾嘗試過進行sys.path.append()黑客攻擊,但實際上並沒有用。 如果有一種真正的Python方式可以實現這一目標,那么我不介意花費額外的精力來使其工作。

編輯:好吧,我再次嘗試了sys.path.append(),它確實起作用了,但這確實是一個優雅的解決方案,我真的很想聽聽是否還有其他方法。

簡而言之:您不能在兩個模塊之間使用相同的名稱。 您有myapp文件夾和myapp.py文件

那是因為導入模塊的順序。

  1. 在當前目錄內
  2. 當前套餐
  3. 全局包文件夾

因此,如果您嘗試在config.py中import myapp.lib.some_module ,那么解釋器將首先看到您在同一文件夾中有myapp.py並從字面上嘗試從該文件導入lib.some_module ,該文件不存在。

就像嘗試從該模塊外部導入myapp.myapp.lib.some_module

因此,最好的方法是重命名myapp.py文件

暫無
暫無

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

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