2016-07-02 7 views
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.1 external.py

    1.2 getdata.py

  2. 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文を試してみたものを言及するのを忘れてしまいました。すべてのファイルにモジュールをインポートする以外の方法がありますか?

答えて

関連する問題