无法从当前工作目录外部导入函数
Unable to import a function from outside the current working directory
我目前在导入一些函数时遇到困难,这些函数位于 python 文件中,该文件位于主 flask 应用程序脚本工作目录的父目录中。结构如下
project_folder
- public
--app.py
-scripts.py
这是 app.py
的副本代码:
def some_function():
from scripts import func_one, func_two
func_one()
func_two()
print('done')
if __name__ == "__main__":
some_function()
scripts.py
包含这样的函数:
def func_one():
print('function one successfully imported')
def func_two():
print('function two successfully imported')
在我的 app.py
中导入这些函数的 pythonic 方法是什么?
在它前面加一个点,以便它搜索当前目录 (project_folder) 而不是您的 python 路径:
from .scripts import func_one, func_two
相关导入的详细信息在PEP 328
中描述
编辑:我假设您正在使用一个包。考虑添加一个 __init__.py
文件。
无论如何,您可以通过更改系统路径导入 python 中的任何内容:
import sys
sys.path.append("/path/to/directory")
from x import y
1.
import importlib.util
def loadbasic():
spec = importlib.util.spec_from_file_location("basic", os.path.join(os.path.split(__file__)[0], 'basic.py'))
basic = importlib.util.module_from_spec(spec)
spec.loader.exec_module(basic)
return basic #returns a module
- 或者在目录中创建一个空文件
__init__.py
。
和
- 不要用追加污染你的路径。
我目前在导入一些函数时遇到困难,这些函数位于 python 文件中,该文件位于主 flask 应用程序脚本工作目录的父目录中。结构如下
project_folder
- public
--app.py
-scripts.py
这是 app.py
的副本代码:
def some_function():
from scripts import func_one, func_two
func_one()
func_two()
print('done')
if __name__ == "__main__":
some_function()
scripts.py
包含这样的函数:
def func_one():
print('function one successfully imported')
def func_two():
print('function two successfully imported')
在我的 app.py
中导入这些函数的 pythonic 方法是什么?
在它前面加一个点,以便它搜索当前目录 (project_folder) 而不是您的 python 路径:
from .scripts import func_one, func_two
相关导入的详细信息在PEP 328
中描述编辑:我假设您正在使用一个包。考虑添加一个 __init__.py
文件。
无论如何,您可以通过更改系统路径导入 python 中的任何内容:
import sys
sys.path.append("/path/to/directory")
from x import y
1.
import importlib.util
def loadbasic():
spec = importlib.util.spec_from_file_location("basic", os.path.join(os.path.split(__file__)[0], 'basic.py'))
basic = importlib.util.module_from_spec(spec)
spec.loader.exec_module(basic)
return basic #returns a module
- 或者在目录中创建一个空文件
__init__.py
。
和
- 不要用追加污染你的路径。