6

実行中に Python ファイルをインポートするにはどうすればよいですか?

私は3つのファイルを作成a.pyb.pyc.pyパスにC:\Users\qksr\Desktop\Samples

ファイルには、以下に示すコードが含まれています。

a.py

from c import MyGlobals

def func2():
    print MyGlobals.x
    MyGlobals.x = 2

b.py

import a
from c import MyGlobals

def func1():
    MyGlobals.x = 1      

if __name__ == "__main__":
    print MyGlobals.x
    func1()
    print MyGlobals.x
    a.func2()
    print MyGlobals.x

c.py

class MyGlobals(object):
    x = 0

コード b.py を実行すると、次のエラーがスローされます。

ImportError: No module named a

私の作業ディレクトリはデフォルトであり、すべてのファイル a、b、c はサンプル フォルダーに作成されていると思います。

PythonでPythonファイルをインポートするにはどうすればよいですか?

4

6 に答える 6

6

同じディレクトリで作業している場合、つまり とb.py同じフォルダにいる場合、この問題を再現することはできません (また、この問題が発生する理由a.pyもわかりません) 。os.getcwd()b.py

そうでない場合は、これを上に追加しますb.py

import sys
sys.path.append('PATH TO a.py')

または、それらが同じパスにある場合、

import sys
sys.path.append(os.basename(sys.argv[0])) # It should be there anyway but still..
于 2013-03-28T12:17:36.597 に答える
5

微調整PYTHONPATHは一般的にあまり良い考えではありません。

__init__.pyより良い方法は、空でもよいという名前のファイルを追加して、現在のディレクトリをモジュールのように動作させることです。

次に、Python インタープリターを使用して、そのディレクトリからファイルをインポートできます。

于 2013-03-28T12:18:28.847 に答える
1

参照: デフォルト パス以外の任意のパスに作成されたファイルをインポートする方法を教えてください。

import sys

sys.path.append(directory_path) # a.py should be located here
于 2013-03-28T12:09:33.197 に答える
0

デフォルトでは、Python は現在の作業ディレクトリからモジュールをインポートしません。これには2つの(おそらくそれ以上の)解決策があります:

PYTHONPATH=. python my_file.py

にインポートするモジュールを探すように python に指示します.

sys.path.append(os.path.dirname(__file__))

これにより、実行時にインポート パスが変更され、「現在の」ファイルのディレクトリが追加されます。

于 2013-03-28T12:14:44.503 に答える
0

1 番目のオプション:ファイルへのパスを、Python が参照する既定のパスに追加します。

import sys
sys.path.insert(0, 'C:/complete/path/to/my/directory')

2 番目のオプション:環境の現在のルート (現在のディレクトリ) への相対パスを追加します。代わりに、次を使用します。

#Learn your current root 
import os
os.getcwd()  

#Change your current root (optional)
os.chdir('C:/new/root')

#Add the path from your current root '.' to your directory
import sys
sys.path.insert(0, './Path/from/current/root/to/my/directory')
于 2018-12-30T03:38:15.983 に答える