2017-10-29 2 views
0

いくつかの定義済み関数を含むpythonスクリプトを別のpythonスクリプトusing this approach via SOにインポートしようとしています。私がインポートしたいスクリプトは多くの関数を定義しています(そのうちのいくつかは他の関数の中に入れ子になっています)ので、各関数ではなくスクリプト全体を個別にインポートしたいと考えています。私は以下の簡単な例を使用しています。定義済みのすべての関数をpythonスクリプト1からPythonスクリプト2にインポートするにはどうすればいいですか?

は私が'workspace'という名前の私のdesktop上のフォルダを持っていると言います。フォルダ'workspace'には、'pre.py'という名前のスクリプト(以下で定義されている)と空白のファイル'__init__.py'が含まれています。同じ'workspace'フォルダで

def get_g(x): 
    """ Sample Function """ 
    if isinstance(x, list): 
     res = [xi**2 for xi in x] 
    else: 
     res = x**2 
    return res 

、私は'pre.py'で定義されたすべての関数をインポートしたいと思いれる'post.py'という名前のスクリプトは、そこにあります。 'post.py'のサンプルスクリプトは次のとおりです。

試行#1:

import matplotlib.pyplot as plt 

def get_my_imports(script_name, fileloc="/Users/myname/Desktop/workspace"): 
    """ Import Sample Function (defined above) """ 
    from fileloc import script_name 

get_my_imports('pre.py') 

x = np.linspace(1, 10, 100) 
y = get_g(x) 

plt.plot(x, y) 
plt.show() 

>> ImportError: No module named 'fileloc' 

試行#2:

import matplotlib.pyplot as plt 
from "/Users/myname/Desktop/workspace" import 'tst.py' ## error in this line 

x = np.linspace(1, 10, 100) 
y = get_g(x) 

plt.plot(x, y) 
plt.show() 

>> SyntaxError: invalid syntax 

私の最初の試みで、私はPYスクリプトをインポートするのアプローチを一般化しようとしました。しかし、通訳者はfilelocが私の意図ではなくインポート可能なモジュールだと思っています。私の2番目の試みは、私がこれを行う方法の根本的な何かを理解していないと伝えています。このスタイルのアプローチは、どのように正しく機能するように適応できますか?あなたの2つのpythonファイルが同じワークスペースフォルダ内にあるので(それはファイルの場所に関係だ場合、私はリンゴのラップトップを使用しています。)

+1

リンク先を参照してください。^ –

答えて

1

を、あなたは、単にpost.py.に

import pre 

を書くことができますあなたが与えられた関数funcのためにあなたがそれを使用するたびにモジュールの名前を入力したくない場合は、モジュールという名前の前をインポートした後、あなたはあなたができる、

pre.func() 

ことによってそれに定義された関数funcを使用することができますdo

from pre import func 
func() 

また、特定のモジュールをインポートして、利便性のために別名を付けることもできます。例えば、

import pre as p 
p.func() 

編集:モジュールおよび機能の使用法を追加します。

+0

私はそれを試みましたが、私はこのエラーを受け取ります。 'Y = get_g(x)の NameError:名 'get_gは私の最新の編集を参照してください – mikey

+0

をdefined'ではありません。 – eozd

関連する問題