Używam projektu kogoś ELSES, aby dodać pewną funkcjonalność do mojego, a jest skrypt Pythona, który chcę importować. Problem jest wyposażony w strukturę importu ich katalogów: Umieściłem katalog projektu w podfolderze pod moim głównym projektem (musi zostać tam, więc mogę zachować swój projekt z kontroli w wersji), wygląda tak:

myproject/
  myscript.py
  theirproject/
    __init__.py
    baz.py
    secondlayer/
      __init__.py
      all.py
      foo.py
      bar.py

ALL

from secondlayer.foo import *
from secondlayer.bar import * #etc

Chciałbym importować:

from theirproject.secondlayer.all import *

Ale to zawodzi, gdy Python skarży się "Brak modułu o nazwie sekundlayer.Foo" Próbowałem również następujących:

from theirproject.secondlayer import all

Mogę go pracować, gdy umieściłem swój skrypt w IchProject / i importuje wszystkie bez prefiksu "IchProject", ale naprawdę nie mogę tak być. Mogę dalej poprzez proces importowy, importując foo, bar i etc indywidualnie w ten sposób:

from theirproject.secondlayer import foo
from theirproject.secondlayer import bar #etc

Ale wtedy te skrypty nie importują więcej rzeczy z jeszcze innych skryptów (takich jak Baz.py) na tym samym poziomie co sekundlayer, więc utknąłem.

Co jest właściwy sposób na zrobienie tego w Pythonie 2.7.6?

2
domoarigato 17 sierpień 2014, 10:33

3 odpowiedzi

Najlepsza odpowiedź

Skończyłem rozwiązać problem, dodając IchProject / do mojego Pythonpath. Upewniałem odpowiedź Junnytony - pomogła mi wskazać we właściwym kierunku, dzięki czemu!

0
domoarigato 20 sierpień 2014, 07:55

Jeśli się zmieniysz.

from secondlayer.foo import *
from secondlayer.bar import *

Do importu względnego użytkownika w ten sposób

from .foo import *
from .bar import *

Lub w ten sposób

from foo import *
from bar import *

To działa.

Dodatkowo, możesz wykonać te import w poziomie __init__.py na poziomie sekundlayera, aby stał się import z myscript.py

from theirproject.secondlayer.all import *
1
junnytony 17 sierpień 2014, 08:55

Sprawdź, czy masz niezbędne uprawnienia do importowania pakietu z katalogu i odpowiadających im katalogów podrzędnych.

W odniesieniu do odniesienia możesz zobaczyć to i odpowiednie powiązane pytania:

Import Pythona nie działa

0
Community 23 maj 2017, 12:11