注意:这是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')
我发现这个问题是import from local directory的副本。在
具体来说,“Python2.5 for Ubuntu8.10没有当前目录(空字符串)系统路径为翻译服务。”
不幸的是,我的应用程序仍然在py2上,所以我在py2上运行笔记本。我放了一个AppNotebooks的样本。所以修复方法是迁移到py3。或者对于app,将config放入一个子包(即py_lib)。在
相关问题 更多 >
编程相关推荐