jupyter笔记本:名称错误:未定义名称“c”

2024-09-26 22:45:57 发布

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

每次我试着启动我的笔记本时,我都会发现下面的错误。 让我们指定im是项目中的新工作人员,文件config.py是在我加入团队之前创建的

有人知道怎么解决吗

实际执行的代码是

Requirements.txt

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

错误细节

~/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\U 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_配置时,它总是在我的个人目录marczhr中

  /Users/marczhr/.jupyter/jupyter_notebook_config.py 

但我想在我的工作中完成一些我可以在git上推动的事情

希望我清楚

谢谢,


Tags: frompyimportconfighosturltargetcreate
1条回答
网友
1楼 · 发布于 2024-09-26 22:45:57

不要从配置文件所在的目录运行笔记本

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

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

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

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

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

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

总之,这是导入时的经典名称冲突,因为文件/目录的名称相同。永远要小心这一点

(我在评论中对其他一些潜在问题进行了评论:这一点仍然存在,但与当前的问题无关。)

相关问题 更多 >

    热门问题