python - 从外部目录导入 python 库
问题描述
我正在尝试导入已开发的 python 文件。最初,当所有文件都在同一个目录中时,我对它们没有任何问题。但是,我决定将项目拆分到专用目录。之后,我无法再导入文件。
我的文件结构类似于以下内容:
dirFoo\
mainFoo1.py
dirFoo\
mainFoo2.py
dirFooCommon\
commonFoo.py
commonFoo2.py
最初,我试图更改 mainFoo1.py 的导入路径并执行: from dirFooCommon import commonFoo
。但是,这种方法给了我以下错误:ModuleNotFoundError: No module named 'common'。
除此之外,我尝试使用imp.load_source
似乎可行的方法。不幸的是,这会产生额外的问题。例如,如果某些 commonFoo.py 库必须包含其他库怎么办?在这种情况下,他们每个人都需要使用绝对项目路径,当我尝试在任何其他地方使用公共库时,这将是一个问题。
你知道我应该怎么做才能将我的公共库包含到我的主要项目中吗?
解决方案
您可以使用此文件夹结构,以便正确调用每个包和模块。
dirFoo\ <=== This is a package know
__init__.py
mainFoo1.py
dirFoo2\ <==== Change the name or you will have namespace issue
__init__.py
mainFoo2.py
dirFooCommon\ <=== This is a package know
__init__.py
commonFoo.py
commonFoo2.py
所以mainFoo1.py
你可以commonFoo.py
这样打电话
import sys
sys.path.append("/path/to/dirFooCommon")
from dirFooCommon import commonFoo
要替换sys.path.append
,您还可以在PYTHONPATH
.
推荐阅读
- c++ - QPixmap 如何比较两个像素图(图片)是否相同或不同
- gnuplot - gnuplot:我如何旋转标题
- reactjs - 使用 firebase 创建 NextJS 应用程序 - firebase 在本地工作,但在 vercel 生产中失败
- javascript - 在 React 应用程序中获取 API POST 未在快速/节点服务器的 catch 块中记录错误
- python - 如何将未知次数的字符串拆分为列表
- c# - rest api 之间的通知
- c - 在另一个函数中修改链表
- list - Prolog 递归煎饼排序
- mysql - 为什么Mysql的左连接条件不被遵守?
- ios - Firebase GoogleService-Info.plist 文件被盗