Jupyter 笔记本:名称错误:未定义名称"c"



每次我试图启动我的笔记本我得到下面的错误。让我们指定我是项目的新员工,并且文件config.py是在我加入团队之前创建的。

有谁知道怎么解决这个问题吗?

实际完成的代码是

psycopg2==2.7.3.2.  
SQLAlchemy==1.2.2
pandas==0.21.0
docker==3.3.0
python-json-logger
sshtunnel==0.1.4
jupyter
jupytext==1.2
geopy==2.2.0

errror细节

~/SG/notebooks/config.py in <module>
1 # Using jupytext
----> 2 c.NotebookApp.contents_manager_class = "jupytext.TextFileContentsManager"
3 c.ContentsManager.default_jupytext_formats = "ipynb,py"
NameError: name 'c' is not defined

代码在笔记本中导致错误的行是

from src.util.connect_postgres import postgres_connexion

文件connect_postgres

from sqlalchemy import create_engine
from config.util.database import TARGET_TEST_HOST, TARGET_PROD_HOST, 
TARGET_TEST_DB, TARGET_PROD_DB, TARGET_TEST_USER, TARGET_PROD_USER, SG_PROD_USER, SG_PROD_HOST
from config.secrets.passwords import TARGET_PROD_PWD, TARGET_TEST_PWD, SG_PROD_PWD
from sshtunnel import SSHTunnelForwarder
import psycopg2
def _create_engine_psg(user, db, host, port, pwd):
""" Returns a connection object to PostgreSQL """
url = build_postgres_url(db, host, port, pwd, user)
return create_engine(url, client_encoding='utf8')
def build_postgres_url(db, host, port, pwd, user):
url = 'postgresql://{}:{}@{}:{}/{}'.format(user, pwd, host, port, db)
return url
def postgres_connexion(env):
if env == 'prod':
return create_engine_psg_with_tunnel_ssh(TARGET_PROD_DB, 
TARGET_PROD_USER, TARGET_PROD_PWD, SG_PROD_PWD,
SG_PROD_USER, 
SG_PROD_HOST, TARGET_PROD_HOST)
else:
raise ValueError("'env' parameter must be 'prod'.")

config.py

c.NotebookApp.contents_manager_class = "jupytext.TextFileContentsManager"
c.ContentsManager.default_jupytext_formats = "ipynb,py"

我认为我可以生成文件,然后编辑它。

当我尝试创建jupyter_notebook_config时,它总是在我的个人目录marczhr

/Users/marczhr/.jupyter/jupyter_notebook_config.py 

但是我想做一些我可以在git上推送的事情

希望我讲清楚^^

谢谢你,

不要在有配置文件的目录下运行笔记本。

原因是在列出的代码中有一个带有配置模块或包的导入。通过从带有配置文件的目录启动笔记本,它将导入该Jupyter配置文件,而不是正确的包或模块,并产生错误。

相反,从其他地方运行它,或者把配置文件放在其他地方。

或者最好的方法是,将这两个配置行添加到/Users/marczhr/.jupyter/jupyter_notebook_config.py文件的末尾,然后删除2-3行config.py文件。

对于后一种情况,您现在可以从任何地方启动笔记本服务器,并且不需要指定任何配置文件,因为Jupyter将自动使用生成的(添加行)配置文件。

如果您想保留config.py文件,那么从另一个目录启动Jupyter笔记本服务器,并简单地指定完整路径,如

jupyter --config=$HOME/SG/notebooks/config.py

总而言之,这是一个典型的导入时的命名冲突,因为命名相同的文件/目录。一定要小心。

(我已经在评论中评论了一些其他潜在的问题:它仍然存在,但与当前的问题无关。)

相关内容

  • 没有找到相关文章

最新更新