簡體   English   中英

如何從python中的其他目錄導入模塊

[英]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 並將appsrcvlep目錄的絕對路徑添加到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.

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