1. ホーム
  2. python

[解決済み] Pythonで自作のモジュールをインポートできない

2022-04-23 16:22:30

質問

Pythonでモジュールのインポートがどのように動作するのか理解するのに苦労しています(他の言語でもやったことがありません)。

あるとします。

myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py

今、私はこのようなものを手に入れようとしています。

myapp.py
===================
from myapp import SomeObject
# stuff ...

TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject

しかし、Pythonでは myapp はモジュールです。

ImportError: No module named myapp

解決方法は?

あなたの場合、インポートしようとしているのは SomeObject を myapp.py と TestCase.py のスクリプトから削除してください。myapp.py からは、次のようにします。

import SomeObject

は同じフォルダーにあるので TestCase.py については、次のようにします。

from ..myapp import SomeObject

しかし これは、パッケージからTestCaseをインポートしている場合のみ機能します。もし、直接 python TestCase.py の場合、パスを変更する必要があります。これは、Pythonの中で行うことができます。

import sys
sys.path.append("..")
from myapp import SomeObject

ただし、これは一般に推奨されません。

一般的に、他の人に自分のPythonパッケージを利用してもらいたい場合は distutils を使用してセットアップスクリプトを作成します。そうすれば、誰でも簡単にあなたのパッケージをインストールすることができます。 python setup.py install そして、そのマシン上のどこでも利用できるようになります。もしあなたがそのパッケージについて真剣に考えるなら、Python Package Index に追加することもできます。 PyPI .