簡體   English   中英

jupyter 筆記本:NameError:未定義名稱“c”

[英]jupyter notebook: NameError: name 'c' is not defined

每次我嘗試啟動我的筆記本時,我都會收到以下錯誤。 讓我們指定項目的新工作人員,並且在我加入團隊之前創建了文件 config.py。

請問有人知道怎么解決嗎?

實際完成的代碼是

需求.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_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'.")

配置文件

  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 notebook 服務器,只需指定完整路徑,比如

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

總而言之,這是導入時的經典名稱沖突,因為文件/目錄具有相同的名稱。 對此始終保持警惕。

(我在評論中評論了其他一些潛在問題:這仍然存在,但與此處當前的問題無關。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM