2016-12-28 16 views
0

同じ親に由来する別のディレクトリからモジュールをインポートしようとしています。私は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:\ other

print(os.listdir(sys.path [0])=====> ['apple'、 'work_here']

私はPython 2.7バージョンをPython 2.7バージョンと同じ方法で動作させようとしていますが、何が3.5の動作が違うのか理解しています。

+0

os.sep https://docs.python.org/2/library/os.html – Wyrmwood

+0

私は3.5バージョンを動作させることができました。 sys.path.insert(0、 '..') – Oedipus

答えて

0

3.5バージョンを動作させることができました。 sys.path.insert(0、 '..')

のsys.path.insert(0、os.path.join(os.path.split(file)[0]、 ".."))
+0

でsys.path.insert(0、os.path.join(os.path.split(__ file __)[0]、 ".."))また、各ソースフォルダに__init__.pyを入れ、プロジェクトディレクトリから実行すると、ナンセンスを背後に残すことができます。その後、インポートだけで仕事。 https://docs.python.org/2/tutorial/modules.html – Wyrmwood

+0

これは人気のあるテーマのようではありませんでした。 – Oedipus

関連する問題