【发布时间】:2018-10-13 18:40:25
【问题描述】:
我有一个 Jupyter 笔记本,我想使用计算机中其他文件夹中的本地 python 函数。 当我导入这些函数时,我收到此错误: "ModuleNotFoundError: 没有名为 'xxxxxxxxxxxxxx' 的模块
- 我使用 anaconda 作为 python 解释器
【问题讨论】:
我有一个 Jupyter 笔记本,我想使用计算机中其他文件夹中的本地 python 函数。 当我导入这些函数时,我收到此错误: "ModuleNotFoundError: 没有名为 'xxxxxxxxxxxxxx' 的模块
【问题讨论】:
看,在 python 2.7 上它会工作,但在 python 3 上你会遇到一些错误......
如果你在其他文件中写了一些函数,你需要导入这个文件。如果这个文件在同一个文件夹中- 很好。但是如果在子文件夹中...在子文件夹中,您需要创建空文件 init.py
现在,如果您尝试从子文件导入您的模块 - 也可以工作
无能为力(适用于 python 3):
使用此代码
import os
import sys
sys.path.append(os.getcwd() + '/modules')
import my_module
【讨论】:
您可以使用sys 将路径添加到本地模块/python 文件中。
import sys
sys.path.append("/path/to/file/") # path contains python_file.py
import python_file
如果您想通过将模块添加到 Anaconda 路径来获得更持久的解决方案,请参阅之前来自 cord-kaldemeyer https://stackoverflow.com/a/37008663/7019148 的回答。为完整起见,复制以下内容:
我在 Anaconda 论坛中找到了我的问题的两个答案:
1.) 将模块放入站点包中,即始终打开的目录 $HOME/path/to/anaconda/lib/pythonX.X/site-packages 系统路径。这也应该通过创建符号链接来工作。
2.) 将 .pth 文件添加到目录 $HOME/path/to/anaconda/lib/pythonX.X/site-packages。这个可以命名 任何东西(它必须以 .pth 结尾)。 .pth 文件只是一个 以换行符分隔的目录的完整路径名列表 将在 Python 启动时添加到您的路径中。
两者都很简单,我选择了第二个选项 更灵活。
***更新:
3.) 在包的文件夹中创建一个 setup.py 并使用 pip install -e /path/to/package 安装它,这是最干净的选项 从我的角度来看,因为您还可以看到所有安装使用 点子列表。
还是谢谢!
【讨论】:
如果您还没有,请尝试在代码中使用函数的完整路径名。
from Folder1.Folder2.FileName import ModuleName
someVar = ModuleName(params)
Folder1 将是与您的主程序位于同一目录中的文件夹。
此外,在您导入的每个文件夹中创建一个名为 __init__.py 的空文件。
【讨论】: