在 Python 中,可以使用相對導入或者絕對導入來導入模塊。在你的項目結構中,可以采取以下方式導入`util.py`中的類:
首先,你的項目結構看起來像這樣:
~~~
Copy codeproject_root/
app/
app/
util.py
features/
steps/
hello.py
~~~
為確保Python能找到app模塊,需要確保project\_root在Python的模塊搜尋路徑中,通常最簡單的方法是將project\_root設為工作目錄。
然后在`hello.py`文件中可以采取以下方式導入 util.py 中的類:
~~~
pythonCopy code# 使用相對導入
from ...app.app.util import ClassName
# 或使用絕對導入,前提是 app 是在你的 PYTHONPATH 中
from app.app.util import ClassName
~~~
在以上代碼中,`ClassName`是`util.py`中你想要導入的類的名字。
注意:務必確認工作目錄和PYTHONPATH設置正確,否則可能會出現模塊導入錯誤。
如果Python仍然沒法找到模塊,可能需要檢查是否正確安裝并配置了Python環境,確保Python解釋器是在你的工程目錄下運行。在IDE(例如,PyCharm)或命令行工具中,你要確保工作目錄被設置為你想要執行的module的根目錄。
絕對導入和相對導入的選擇取決于你的項目結構和運行的環境。在大多數情況下,推薦使用絕對導入。
## 找不到模塊
如果你的絕對導入報告找不到`app`模塊,這通常是因為Python的模塊查找路徑(`sys.path`)沒有包含`app`模塊所在的目錄。
以下是幾種可能的解決方案:
1. 將`app`模塊的父目錄添加到`PYTHONPATH`環境變量中。例如,如果你的`app`模塊位于`/home/username/myproject/app`,你可以將`/home/username/myproject/`添加到`PYTHONPATH`中:
~~~
bashCopy codeexport PYTHONPATH="$PYTHONPATH:/home/username/myproject/"
~~~
或者在Windows中:
~~~
bashCopy codeset PYTHONPATH=%PYTHONPATH%;C:\path\to\myproject\
~~~
2. 改變工作目錄到`app`模塊的父目錄。例如,如果你的代碼在`/home/username/myproject/app`目錄下,你需要在`/home/username/myproject/`目錄下運行你的Python代碼。
3. 在你的Python代碼中動態修改`sys.path`。例如,如果你的`app`模塊在`/home/username/myproject/app`,你可以在你的Python代碼中添加以下代碼:
~~~
pythonCopy codeimport sys
sys.path.append('/home/username/myproject/')
~~~
以上這些是最常見的解決方案。具體方案可能因項目結構、運行環境和開發需求而異。
注:動態修改`sys.path`通常被視為一種權宜之計,它可能會給代碼的移植性帶來問題。因此,盡可能使用環境變量`PYTHONPATH`或者正確的工作目錄來解決模塊查找問題。
- 前言
- 1.入門篇
- Python介紹
- 安裝與使用
- Python開發利器之VS Code
- 模塊安裝
- 命令行
- 一次Python無法安裝模塊的問題探索與解決之旅
- 命令運行
- Conda
- 下載地址
- 2.基礎篇
- 基礎語法
- 輸入與輸出
- with as的用法
- 注釋
- Python命令行參數
- 編碼
- 變量類型
- 列表遍歷
- 運算符
- 表達式語句
- 條件
- 循環
- 日期和時間
- 函數
- 高級語法
- @符號-裝飾器
- 模塊和包
- name
- init.py
- 錯誤和異常
- 面向對象
- 3.專題篇
- 常用功能
- Python 字符串連接
- python web
- Python CGI編程
- Python OAuth2
- 認證 Flask-HTTPAuth
- 常用命令
- 內置函數
- dir()
- print(f)
- 標準模塊
- sys
- pickle-數據序列化
- os
- IO(輸入輸出)
- 鍵盤輸入
- 文件讀寫
- 測試
- Python測試框架之pytest快速入門
- pytest-bdd快速示例和問題解決
- 基于pytest-bdd的項目目錄結構和命名規范
- python BDD 的相關概念
- Behave介紹和快速示例
- Python BDD之Behave測試報告
- Python BDD 框架比較之 pytest-bdd vs behave
- pytest進階
- Flask + pytest測試
- 參考網址
- pytest-bdd進階
- hehave進階
- 測試路徑
- python + selunium
- HTML 根據多層CSS 查找元素
- 等待執行
- 使用text 查找 span
- pytest如何在控制臺輸出
- 4.問題篇
- pip pip3 及區別
- TypeError: can only concatenate str (not "NoneType") to str
- 5.實戰篇
- matplotlib-繪圖包
- 導入類
- 命名規范
- 模塊查找
- 6.進階篇
- Flask
- Flask介紹
- Flask擴展模塊
- Flask-Login
- 問題
- Jinja2
- Flask-RESTful
- Flask-JWT-Extended
- WSGI
- Flask-SQLAlchemy
- 部署
- Flask VS Django
- Flask Web
- Flask + Vue
- Flask實戰
- Flask 標準目錄結構
- Blueprints
- 參考
- FastAPI 測試
- https 證書 Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate