Python 机器学习导入
Python imports for machine learning
我正在为我正在做的新机器学习项目从 R 切换到 Python。
我找到了一种看起来不错的代码架构(下图),但如果我想让我的代码保持干爽,我在实现时会遇到问题。
所以基本上我有一段代码(函数),我想在不同的模块(即位于 [=14= 下的 data
、features
和 model
之间共享] 模块)。
本例中的代码包含加载和保存数据的函数。
问题是我无法从上层模块导入函数(例如,如果我 functions.py
直接位于 src
文件夹下)
我可以在每个模块(data
、features
、models
)中添加单独的 functions.py
,但这会破坏我尝试创建结构良好的项目的目的.
我想我不是唯一遇到这个问题的人。
这通常是如何处理的?
如何创建可供所有嵌套最深的模块使用的共享模块? (我想将相同的模块导入 make_dataset.py
、build_features.py
、predict_model.py
、train_model.py
)
编辑:
我也忘了说我用的是 virtualenv 和 global space 不应该被污染。
解决方案:
所以我最终做的是将以下代码添加到我的顶级包 __init__.py
文件中:
import sys, os
fullPathToProjectFolder = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, fullPathToProjectFolder)
print('__init__ project packege linked: ' + fullPathToProjectFolder)
因此,无论何时您使用主包或子包中的任何内容,它都会自动链接(因为当您导入主包时,会自动调用 __init__.py
文件)。而且每个模块都可以相对于顶层包进行导入。
例如:如果 train_model.py
想要导入 build_features.py
它会这样做:
from features import build_features
您需要将您的项目添加到您的系统路径,以便 python 可以找到该模块。
这可以在 python:
内完成
import sys
sys.path.insert(0, fullPathToProjectFolder)
然后你就可以用
调用你的模块了
import general_functions
您需要在您的目录中创建 __init__.py
文件,您是否可以将其作为模块创建。所以 functions.py
或文件夹中您可以使用 import
调用的任何内容。希望有用https://docs.python.org/3/tutorial/modules.html#packages
我正在为我正在做的新机器学习项目从 R 切换到 Python。
我找到了一种看起来不错的代码架构(下图),但如果我想让我的代码保持干爽,我在实现时会遇到问题。
所以基本上我有一段代码(函数),我想在不同的模块(即位于 [=14= 下的 data
、features
和 model
之间共享] 模块)。
本例中的代码包含加载和保存数据的函数。
问题是我无法从上层模块导入函数(例如,如果我 functions.py
直接位于 src
文件夹下)
我可以在每个模块(data
、features
、models
)中添加单独的 functions.py
,但这会破坏我尝试创建结构良好的项目的目的.
我想我不是唯一遇到这个问题的人。
这通常是如何处理的?
如何创建可供所有嵌套最深的模块使用的共享模块? (我想将相同的模块导入 make_dataset.py
、build_features.py
、predict_model.py
、train_model.py
)
编辑:
我也忘了说我用的是 virtualenv 和 global space 不应该被污染。
解决方案:
所以我最终做的是将以下代码添加到我的顶级包 __init__.py
文件中:
import sys, os
fullPathToProjectFolder = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, fullPathToProjectFolder)
print('__init__ project packege linked: ' + fullPathToProjectFolder)
因此,无论何时您使用主包或子包中的任何内容,它都会自动链接(因为当您导入主包时,会自动调用 __init__.py
文件)。而且每个模块都可以相对于顶层包进行导入。
例如:如果 train_model.py
想要导入 build_features.py
它会这样做:
from features import build_features
您需要将您的项目添加到您的系统路径,以便 python 可以找到该模块。
这可以在 python:
内完成import sys
sys.path.insert(0, fullPathToProjectFolder)
然后你就可以用
调用你的模块了import general_functions
您需要在您的目录中创建 __init__.py
文件,您是否可以将其作为模块创建。所以 functions.py
或文件夹中您可以使用 import
调用的任何内容。希望有用https://docs.python.org/3/tutorial/modules.html#packages