相关疑难解决方法(0)

从不同的文件夹导入文件

我有以下文件夹结构.

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-import importerror

1186
推荐指数
28
解决办法
121万
查看次数

使用python3从jupyter笔记本中相对导入的另一个目录中的模块导入本地函数

我有一个类似于以下的目录结构

meta_project
    project1
        __init__.py
        lib
            module.py
            __init__.py
    notebook_folder
        notebook.jpynb
Run Code Online (Sandbox Code Playgroud)

notebook.jpynb我尝试使用相对导入来访问函数function()module.py使用:

from ..project1.lib.module import function
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

SystemError                               Traceback (most recent call last)
<ipython-input-7-6393744d93ab> in <module>()
----> 1 from ..project1.lib.module import function

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

有没有办法让这个使用相对导入工作?

请注意,笔记本服务器在meta_project目录级别实例化,因此它应该可以访问这些文件中的信息.

另请注意,至少与最初的预期project1并未被视为模块,因此没有__init__.py文件,它只是作为文件系统目录.如果问题的解决方案需要将其视为一个模块并包含一个__init__.py文件(即使是空白文件),那么这样做是不错的,但这样做不足以解决问题.

我在机器和相对导入之间共享这个目录允许我在任何地方使用相同的代码,并且我经常使用笔记本进行快速原型设计,因此涉及黑客攻击绝对路径的建议不太可能有用.


编辑:这与Python 3中的相对导入不同,Python 3通常讨论Python 3中的相对导入,特别是从包目录中运行脚本.这与在jupyter笔记本中工作有关,该笔记本试图在另一个具有不同的一般和特定方面的目录中的本地模块中调用函数.

python relative-import jupyter-notebook

86
推荐指数
7
解决办法
6万
查看次数

如何在Jupyter笔记本中设置env变量

我有一个问题,Jupyter在bashrc文件中看不到env变量,有没有办法在jupyter中加载这些变量或者为它添加custom变量?

python bash environment-variables jupyter-notebook

55
推荐指数
7
解决办法
6万
查看次数

如何从Jupyter笔记本上的*.IPYNB文件中执行*.PY文件?

我正在研究Python笔记本,我希望将大量输入代码[输入] 打包成[*.PY]文件并从笔记本中调用这些文件.

我知道从Notebook运行[ .PY]文件的操作,并且命令因Linux或Windows而异.但是当我执行此操作并从笔记本执行[.PY]文件时,它无法识别笔记本中加载的任何现有库或变量(就像[ .PY]文件从零开始...).

有没有什么办法解决这一问题?

问题的一个可能的简化示例如下:

In[1]:
import numpy as np
import matplotlib.pyplot as plt

In[2]:
def f(x):
    return np.exp(-x ** 2)

In[3]:
x = np.linspace(-1, 3, 100)

In[4]:
%run script.py
Run Code Online (Sandbox Code Playgroud)

" script.py "具有以下内容:

plt.plot(x, f(x))
plt.xlabel("Eje $x$",fontsize=16)
plt.ylabel("$f(x)$",fontsize=16)
plt.title("Funcion $f(x)$")
Run Code Online (Sandbox Code Playgroud)
  • 在真正的问题中,文件[*.PY]没有4行代码,它有足够的代码.

python jupyter

44
推荐指数
4
解决办法
8万
查看次数