1
コードをパッケージ化することなく、いつかIPythonを使用してきました。私は次のページを見て、自分のモジュールのディレクトリ構造を設定し、今度はIPythonを使ってプログラムを開始しました。ここでPythonコードをパッケージ化した後のNameError
http://pythoncentral.io/how-to-create-a-python-package/
https://docs.python.org/3/reference/import.html
https://docs.python.org/3/tutorial/modules.html
は私のセットアップの要旨であるルートfoder
モジュール(ディレクトリ)
1.1 external.py
1.2 getdata.py
driver.ipynb
は、私は、モジュールと呼ばれるディレクトリを作成し、2つのファイルを作成しました。
モジュール(ディレクトリ)
- external.py(以下が含まれています)
import glob # and many other import statements
- getdata.py(以下が含まれています)
def funcname():
file_list = glob.glob("Data/")
def other_func():
x = x + 3
今I IPythonノートブックで次のコードを実行してください。
from modules import external
from modules.getdata import *
# so that I can funcname() instead of modules.getdata.funcname()
other_func() # runs as expected
funcname() # NameError global name 'glob' is not defined
IPythonノートブックでglob.glob( "Data /")を実行してもエラーは発生しません。
関数の名前を変更せずにこの名前空間の問題を修正するにはどうすればよいですか?私には十数の機能があり、それらはすべて同じ問題を抱えています。
編集1: - 私はすでに私はグロブを使用して複数のファイルを持っているgetdata.py
import glob
def funcname():
file_list = glob.glob("Data/")
def other_func():
x = x + 3
で
import文を試してみたものを言及するのを忘れてしまいました。すべてのファイルにモジュールをインポートする以外の方法がありますか?