このようなものを適切に書くにはどうすればよいですか:
from ../lib.model import mymodel
ツリーは次のとおりです。
lib----->model---->mynodel.py
|
|----->myscript--->myscript.py
このようなものを適切に書くにはどうすればよいですか:
from ../lib.model import mymodel
ツリーは次のとおりです。
lib----->model---->mynodel.py
|
|----->myscript--->myscript.py
lib
がパッケージの場合、モジュールとして実行し、次のようmyscript
にインポートします。mymodel
from ..model import mymodel # relative import
または:
from lib.model import mymodel # absolute import
myscript.py
パッケージ内のモジュールとして実行するlib
には、次のいずれかを実行します。
lib
そのインポートを含むフォルダーでプログラムを実行しますlib.myscript.myscript
myscript.py
を含むフォルダーからモジュールとして実行しますlib
。python -m lib.myscript.myscript
スクリプトが使用している場合は、使用してプロジェクトの使用ファイルをlib
作成できますsetup.py
setuptools
setuptoolsdevelop
コマンドを使用すると、プロジェクトの「開発モード」バージョンが作成され、Python パスに配置されます。そうすれば、他の python パッケージを使用するのと同じように簡単に使用できます。
setup.py は次のように単純にすることができます。
from setuptools import setup, find_packages
setup(
name = "lib",
version = "0.1dev",
packages = find_packages(),
)
次に、次のようにプロジェクトで開発できます
python setup.py develop
パッケージを任意のスクリプトにインポートできるようになりました
from lib.model import model
から呼び出すと仮定しますmyscript.py
。
これを試して:
import sys
sys.path.insert(0, '../model/')
import mynodel
mynodel
はおそらくmymodel
、あなたの投稿でタイプミスをしたと思います。
imprt ステートメントに拡張子を付けないでください。
sys.path
Python がライブラリ ファイルを探すパスのリストです。必要なディレクトリへの相対パスを追加するだけです。リストの先頭に配置することで、python が最初に指定されたパスでファイルを検索するようになります (たとえば、同じ名前のライブラリがあり、ファイルが優先されます)。
tree
さらに、 (Linux およびcmd
(Windows) コマンド)の出力を提供すると便利な場合があります。これにより、標準化された出力が得られます。