2016-05-25 7 views
1

絶対インポートを使用してPython 3の兄弟ディレクトリからモジュールをインポートする方法を理解できません。兄弟ディレクトリからのインポート(python 3)

  1. sys.pathを変更してください。
  2. __init__.pysetup.pyを使用して、ディレクトリをpip installableパッケージに変換します。

オプション1の場合、sys.pathを変更して、兄弟ディレクトリからモジュールをインポートする方法を考えましたが、この方法は少し難解です。また、私はそれが好まれないことを読んだ。どうして? sys.pathの変更について、本質的に間違っているか危険なことはありますか?

オプション2の場合:私のパッケージピップをインストール可能にするために正確に何をする必要がありますか?私は__init__.pyファイルを作成しましたが、配布用に私のパッケージを準備するにはsetup.pyスクリプトを作成して設定する必要があるようです。私はまだ開発モードにあるので、これは本当に最高の/ pythonicメソッドですか?それが正しい場合は、setup.pyを作成した後に端末にpython setup.py installと入力するだけですか?

編集:私は現在、絶対インポートを使用してこれを調べようとしています。これは、Python 3が相対インポートをサポートしているためです。私が何を読んでから、

答えて

0

、Pythonの3はそれがない相対的な輸入

をサポートしていません。

from .. import foo 

それとも、fooでオブジェクト/モジュールをインポートする場合:myproject/bar/baz.pyからmyproject/foo/__init__.pyをインポートするには

、あなたはこの使用できる

from ..foo import object 

をこれは、パッケージであることをmyprojectが必要ですだからmyproject/__init__.pyが存在する必要があります。

+0

ありがとうございました。私は家にいるときにこれを試してみる。絶対輸入はどうですか? sys.pathを変更せずに絶対インポートを使用して、異なるディレクトリ間でモジュールをインポートすることは可能ですか? – puketronic

+0

https://docs.python.org/3/library/importlib.html#importlib.find_loader –

+0

Python 3でサポートされていない「相対インポート」は暗黙のものです:https://docs.python.org/ 2/tutorial/modules.html#intra-package-references –

関連する問題