2011-10-31 16 views
6

Szukałem od dłuższego czasu, ale nie mogę znaleźć odpowiedzi. Podobne pytania odnoszą się do pewnych trudnych przypadków z bibliotekami stron trzecich i wszystkich, ale moja sytuacja wydaje się prosta. Niemniej jednak nie mogę zrozumieć, jak to działa.Importowanie z innego projektu w pydev

Używam Eclipse 3.5.2, Pydev 2.2.0, działającego na komputerze z Ubuntu 11.04.

Moja sprawa wydaje się prosta: chcę napisać pakiet jako swój własny projekt, a następnie chcę napisać aplikację wykorzystującą ten pakiet w innym projekcie.

Jak należy skonfigurować PyDev tak, że może mieć to dwa projekty "Core" (pakiet) i "app" (który wykorzystuje pakiet podstawowy), a od wewnątrz "app" zrobić:

import core 

?

  • Dodałem rdzeń do Referencji Projektu aplikacji, ale nie robi to nic innego, jak .
  • Dodałem/core/do folderów źródłowych (musiałem to wymusić, ponieważ nie było pokazano na liście), to nie działało (więc usunąłem go).
  • Dodałem/full/path/to/core do zewnętrznych bibliotek, to nadal nie działa.

Przez "nie działa" rozumiem, że otrzymuję "nierozstrzygnięty import: rdzeń", zawsze.

Pomysły?

Odpowiedz

8

Pod warunkiem, że masz 2 projekty z prawidłowo ustawioną funkcją PYTHONPATH (za pośrednictwem folderów źródłowych), powinna działać tylko dodawanie odwołania do projektu.

Może przykładem może pomóc ...

Np .:

project1 
project1/src <-- this should be set as the source folder 
project1/src/core 
project1/src/core/__init__.py 

project2 
project2/src <-- this should be set as the source folder 
project2/src/app 
project2/src/app/__init__.py 

a następnie edytować właściwości project2> Referencje projektu i wybrać „” Project1 aby móc uzyskać dostęp do Project1 z project2.

+3

Dzięki, mam go do pracy teraz! 1) Nie muszę dodawać niczego z project1 w pythonpath lub folderach źródłowych projektu 2. 2) Nazwanie mojego projektu "core" nie wystarcza, nawet jeśli ma __init__.py: potrzebuję odpowiedniego pakietu "core". 3) Konieczne było również ponowne zaćmienie (file/restart). Yay! – Niriel

0

Nie udało mi się tego zrobić, dodając odniesienie do projektu. Jednak udało mi się go uruchomić, najpierw usuwając, a następnie dodając naturę projektu pydev do projektu, a następnie ustawiając odniesienie do projektu.

1

Przez pewien czas byłam w tym samym problemie.
Teraz odkryłem, w jaki sposób mogę importować klasę lub funkcję z modułu i pakietu w innych projektach.
Stwierdziłem, że jestem z tego głupi, ponieważ jest to zawsze łatwe.

Wniosek!
Wszystko, co musisz zrobić, to po prostu sprawdzić nazwę projektu w "Referencjach projektu", Plik/Właściwości/Referencje projektu.
Pod względem wykorzystania importu odwołanie do innego projektu jest takie samo jak umieszczenie wszystkich plików lub modułów w bieżącym katalogu projektu. Używam liclipse_1.0.0_win32.x86_64 na Windows 7.

Pokażmy przykłady.
Istnieją dwa projekty A i B, a projekt A ma moduł a1.py i pakiet "M".
Pracujesz nad projektem B i sprawdź odwołanie Projekt w kolejnym drzewie projektu.

|-- A 
| |-- M 
| | |-- __init__.py 
| | `-- m1.py 
| `-- a1.py 
`-- B 
    `-- b1.py 

# a1.py 
def say_a(): 
    print "I'm A" 

# m1.py 
def say_m(): 
    print "I'm M" 

Teraz możesz uzyskać dostęp do projektu A w następujący sposób.

W rzeczywistości stwierdzenie importu pytona jest dla mnie trochę dziwne, że można znaleźć inny sposób na to samo.
Ponadto, jeśli chcesz uruchomić b1.py z wiersza poleceń Linuksa, zobacz to.

~/tmp/pydemo/B $ PYTHONPATH = ../A python b1.py

+0

To zadziałało dla mnie, dziękuję – Sergio

Powiązane problemy