同じ親に由来する別のディレクトリからモジュールをインポートしようとしています。私はPython 2.7では動作するようになっていますが、Python 3.5では動作しません。モジュールをインポートするときに混在するスラッシュを解決する
私は===> H py_file.pyで働いている:私は===> Hからtotal_text.pyをインポートする
/other/apple/work_here/py_file.py:/その他/リンゴ/banana/total_text.py
インポートはPython 2.7では機能しますが、Python 3.5では機能しません。 3.5では、私はバナナの下に赤い波線を取得し、私は、コードを実行すると、エラーが「『バナナ』という名前のモジュールが」
import sys
import os
os.chdir(os.path.join("H:\\", "other", "apple", "work_here"))
sys.path.insert(0, os.path.join(os.path.split(__file__)[0], ".."))
import banana.total_text
問題を解決しないために読み、私は両方のプログラムで、次のprint文を実行してい私はPython 3.5プログラムで混在したスラッシュを取得しています。
のPython 2.7では、私が取得:
印刷のsys.path [0] =====> H:\その他\りんご\ work_here ..#は、電子内の後に\がありますここには現れなかった。
印刷os.listdir(のsys.path [0])=====> [u'banana 'u'work_here']
は、Python 3.5で私は次の取得:
print sys.path [0] =====> H:/ other/work_here ..#表示されなかったeの後に\があることに注意してください。
印刷os.listdir(のsys.path [0])=====> [ 'リンゴ'、 'work_here']
私の周り検索と部分修正が見つかりました:はos.pathを追加することによってです。私はそれを2つのディレクトリに戻すようにしました。 H:私はそれを書く場合===> import文\他の作品が好き:輸入apple.banana.total_text
os.path.abspath()バージョンを使用して、私が取得:
(sys.path [0])=====> H:\ otherprint(os.listdir(sys.path [0])=====> ['apple'、 'work_here']
私はPython 2.7バージョンをPython 2.7バージョンと同じ方法で動作させようとしていますが、何が3.5の動作が違うのか理解しています。
os.sep https://docs.python.org/2/library/os.html – Wyrmwood
私は3.5バージョンを動作させることができました。 sys.path.insert(0、 '..') – Oedipus