在jupyternoteb上导入失败

2024-04-18 15:37:08 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:这是import from local directory on python2的副本。在

让我先说,对不起,因为我已经通读了python、ipython和jupython的导入规则,不能再保持它们的正确性了。。。在

环境:

ubuntu linux server with jupyterhub
jupyter home is $HOME/opt
$HOME/opt/mynotebooks                      # contains my .pynb notebooks
$HOME/opt/mynotebooks/py_lib               # contains .py files
$HOME/opt/mynotebooks/py_lib/app_config.py # myapp config/links to myapp
$HOME/opt/mynotebooks/py_lib/class1.py     # contains .py files
/opt/myapp/src/app                         # contains my app .py classes
/opt/myapp/src/app/appclass.py             # contains appclass

My notebook1.pynb包含以下启动单元:

^{pr2}$

上面的电池工作正常。在

接下来,加载py_图书馆1级细胞做工作。。。在

from py_lib.class1 import myclass1

但上面给出了一个错误:“没有名为class1的模块”。在

如果我移动应用程序_配置.py到我的笔记本目录,它工作使用以下启动单元…(注意导入应用程序配置更改没有py_库。。。我重新启动内核并在重新运行之前清除所有输出)。这个系统路径我做手术时也是一样_图书馆1级导入。为什么当app_config向下1级时它找不到它?没道理吗?在

import os, sys
MY_NOTEBOOK = os.path.join(os.getenv('HOME'),'opt','mynotebooks')
# add my notebook to ipython path
os.chdir(MY_NOTEBOOK)
sys.path.append(MY_NOTEBOOK) 
import app_config
print(os.getenv('MYAPP_STORE')

(顺便说一句:如果我将笔记本保存到py并通过python运行,那么后一次启动将失败。)

$HOME/opt/mynotebooks/nb_-lib/app_配置.py在

APP_SITE = os.path.join('/opt/myapp/src')
APP_STORE = os.path.join('/opt/myapp/store')
os.environ['APP_SITE'] = APP_SITE
os.environ['APP_STORE'] = APP_STORE
# Link to APP_SITE
os.chdir(APP_SITE)
sys.path.append(APP_SITE)  
APP_UPLOAD = os.path.join(APP_STORE,'upload')

Tags: pathstorepyimportconfigapphomeos
1条回答
网友
1楼 · 发布于 2024-04-18 15:37:08

我发现这个问题是import from local directory的副本。在

具体来说,“Python2.5 for Ubuntu8.10没有当前目录(空字符串)系统路径为翻译服务。”

不幸的是,我的应用程序仍然在py2上,所以我在py2上运行笔记本。我放了一个AppNotebooks的样本。所以修复方法是迁移到py3。或者对于app,将config放入一个子包(即py_lib)。在

相关问题 更多 >