我如何在我的项目中使用来自 github 的 Python 模块代码?

How can I use this Python module code from github in my project?

我不知道如何为此代码设置路径和导入语句以在我的项目中使用它:

https://github.com/IssamLaradji/NeuralNetworks

我将代码添加为 git 子模块,所以这里是根文件夹:

NeuralNetworks/
train_mlp.py

然后在我的 python 代码中,我尝试这样导入:

from NeuralNetworks.multilayer_perceptron import multilayer_perceptron
from NeuralNetworks.multilayer_perceptron import base

mlp = multilayer_perceptron.MultilayerPerceptronClassifier(hidden_layer_sizes=(50, 20), max_iter=200, alpha=0.02)

Python 抱怨 "base" 模块不可用。如何设置此子模块以在我的 sklearn 项目中工作?

1) 如果无法通过 pypi 获得,您可以使用 git 将其克隆到您的本地系统;或

2) github 上有一个下载按钮,它会给你一个 zip 或 tar 文件,你可以下载并放在你的项目下并在本地使用。

那里的示例展示了如何通过导入 multilayer_perceptron.py 在同一目录中只 运行 脚本。如果你想把东西打包成 Python 包,你需要添加 __init__.py 和所有这些东西,并确保东西仍然由你自己导入。

或者,您可以通过 sys.path 或环境变量将包含这些东西的目录添加到您的路径中。

编辑:要反映更新后的问题,您需要在子模块中 __init__.py

既然你知道 git,我会先提交一个 pull request 以将其纳入上游项目(这是一个无害的更改,不需要对项目进行重大重组)。

在此之前,您有两个选择之一:

1) 您的代码可以将子目录添加到 sys.path,然后直接访问 python 模块(而不是作为子模块)。

2) 您可以在您定义的模块中添加一段代码,将 __init__.py 写入 git 子模块:

import os
mydir = os.path.dirname(__file__)
initf = os.path.join(mydir, 'NeuralNetworks', '__init__.py')
if not os.path.exists(initf):
    open(initf, 'wb').close()

导入此模块时,它会通过创建 __init__.py 模块将 NeuralNetworks 变成 Python 包。