我有以下文件夹结构.
application/app/folder/file.py
我想从另一个驻留的Python文件中的file.py中导入一些函数
application/app2/some_folder/some_file.py
我试过了
from application.app.folder.file import func_name
和其他一些尝试,但到目前为止我无法正确导入.我怎样才能做到这一点?
如何在完整路径下加载Python模块?请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项.
看来这里已经有一些关于python 3中相对导入的问题了,但是在经历了很多这些问题后,我仍然找不到我的问题的答案.所以这是问题所在.
我有一个如下所示的包裹
package/
__init__.py
A/
__init__.py
foo.py
test_A/
__init__.py
test.py
Run Code Online (Sandbox Code Playgroud)
我在test.py中有一行:
from ..A import foo
Run Code Online (Sandbox Code Playgroud)
现在,我在文件夹中package,我跑了
python -m test_A.test
Run Code Online (Sandbox Code Playgroud)
我收到了消息
"ValueError: attempted relative import beyond top-level package"
Run Code Online (Sandbox Code Playgroud)
但如果我在父文件夹中package,例如,我运行:
cd ..
python -m package.test_A.test
Run Code Online (Sandbox Code Playgroud)
一切都好.
现在我的问题是:
当我在文件夹中时package,我在test_A子包中运行模块test_A.test,根据我的理解,..A只上升一个级别,它仍然在package文件夹中,为什么它给出了消息说beyond top-level package.导致此错误消息的原因是什么?
在我在Python中的一个测试脚本中,我多次使用此模式:
sys.path.insert(0, "somedir")
mod = __import__(mymod)
sys.path.pop(0)
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来临时修改搜索路径?