[英]How to import module from other directory in python
我有一個這樣的文件樹:
app
|---src
| |---vlep/config.py
|
|---tests
|---conftest.py
從 conftest.py 我試圖import vlep.confi as config
,我得到了ModulenotFoundError: No module named 'vlep'
。 我正在使用 venv 並將app
、 src
和vlep
目錄的絕對路徑添加到venv/bin/activate
,因此當我激活 virtualenv 時,我可以在 PYTHONPATH env 中擁有這些目錄。 我認為這可以完成這項工作,但沒有……也不知道為什么。 我究竟做錯了什么?
您需要手動設置文件路徑以從另一個目錄導入模塊。 您可以為 PYTHONPATH 變量分配一個目錄路徑,並且仍然可以讓您的程序運行。
Linux,可以在終端使用如下命令設置路徑:
export PYTHONPATH='path/to/directory'
在Windows系統中:
SET PYTHONPATH='path/to/directory'
要查看 PYTHONPATH 變量是否包含新文件夾的路徑,可以使用以下命令:
echo $PYTHONPATH
然后你可以做你的進口:
from conftest import vlep.confi as config
您可以像這樣在sys.path
中插入src
文件夾的路徑:
import os
import sys
sys.path.insert(0, f'{os.path.dirname(os.path.abspath(__file__))}/../src')
from vlep import config
這樣,當 Python 解析從哪里導入模塊時,您的src
目錄的絕對路徑將是第一個。 從哪個目錄運行conftest.py
也無關緊要。
謝謝你的時間伙計們。 畢竟,我為允許進口所做的事情並沒有錯。 添加到venv/bin/activate
末尾的export PYTHONPATH=":/home/user/app/src/vlep"
就足夠了。 問題是我正在運行一個正在更改 PYTHONPATH 值的腳本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.