2011-10-31 31 views
6

Tôi đã tìm kiếm một thời gian khá lâu nhưng tôi không thể tìm thấy câu trả lời. Các câu hỏi tương tự liên quan đến một số trường hợp khó khăn với thư viện của bên thứ ba và tất cả, nhưng tình hình của tôi dường như là sách giáo khoa đơn giản. Tuy nhiên tôi không thể tìm ra cách hoạt động của nó.Nhập từ một dự án khác trong pydev

Tôi đang sử dụng Eclipse 3.5.2, Pydev 2.2.0, chạy trên máy Ubuntu 11.04.

Trường hợp của tôi có vẻ đơn giản: Tôi muốn viết một gói làm dự án riêng của mình và sau đó tôi muốn viết một ứng dụng bằng gói này trong một dự án khác.

Làm thế nào nên tôi thiết lập PyDev để tôi có thể có này hai dự án "cốt lõi" (gói) và "ứng dụng" (trong đó sử dụng các gói cốt lõi), và từ bên trong "ứng dụng" làm:

import core 

?

  • Tôi đã thêm lõi vào Tham chiếu dự án của ứng dụng nhưng không làm bất kỳ điều gì.
  • Tôi đã thêm/core/vào thư mục Nguồn (Tôi đã buộc phải làm điều đó vì không phải là hiển thị trong danh sách), nó không hoạt động (vì vậy tôi đã xóa nó).
  • Tôi đã thêm/đầy đủ/đường dẫn/đến/lõi vào Thư viện bên ngoài, nó vẫn không hoạt động.

Bằng cách "không hoạt động", tôi luôn muốn nhận "nhập không được giải quyết: cốt lõi".

Ý tưởng?

Trả lời

8

Với điều kiện bạn có 2 dự án với PYTHONPATH được đặt đúng (thông qua thư mục nguồn), nó chỉ hoạt động khi thêm tham chiếu dự án.

Có lẽ một ví dụ có thể giúp ...

ví dụ .:

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 

và sau đó chỉnh sửa các thuộc project2> tài liệu tham khảo dự án và chọn 'project1' để có thể truy cập vào project1 từ project2.

+3

Cảm ơn, tôi đã nhận nó để làm việc bây giờ! 1) Tôi không cần phải thêm bất cứ thứ gì từ project1 trong pythonpath hoặc thư mục nguồn của dự án 2. 2) Đặt tên dự án của tôi là "core" là không đủ ngay cả khi nó có __init__.py: Tôi cần một gói "core" thích hợp. 3) Ngoài ra, khởi động lại nhật thực (tập tin/khởi động lại) là cần thiết. Yay! – Niriel

0

Tôi không làm việc này bằng cách thêm tham chiếu dự án. Tuy nhiên, tôi đã nhận nó làm việc bằng cách loại bỏ đầu tiên và sau đó thêm bản chất dự án pydev cho dự án, và sau đó, thiết lập các tài liệu tham khảo dự án.

1

Tôi đã gặp phải sự cố tương tự trong một thời gian.
Bây giờ tôi đã tìm ra cách tôi có thể nhập lớp hoặc chức năng từ mô-đun và gói trong các dự án khác.
Tôi thấy mình câm vì điều này là dễ dàng.

Kết luận!
Tất cả những gì bạn phải làm chỉ là kiểm tra tên dự án trong 'Tài liệu tham khảo dự án', Tài liệu/Thuộc tính/Dự án tham khảo.
Về mặt sử dụng nhập, việc tham chiếu dự án khác giống như khi bạn đặt tất cả các tệp hoặc mô-đun trong thư mục dự án hiện tại của mình. Tôi đang sử dụng liclipse_1.0.0_win32.x86_64 trên Windows 7.

Hãy để tôi hiển thị các ví dụ.
Có hai dự án A và B và dự án A có mô-đun a1.py và gói 'M'.
Bạn đang làm việc trên dự án B và kiểm tra tham chiếu Một dự án trong cây dự án sau đây.

|-- 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" 

Bây giờ bạn có thể truy cập dự án A như sau.

#b1.py 
import a1 
from M import m1 
a1.say_a() 
m1.say_m() 

Trong thực tế, lệnh nhập khẩu trăn có chút kỳ lạ đối với tôi mà bạn có thể tìm cách khác để thực hiện tương tự.
Ngoài ra, nếu bạn muốn chạy b1.py từ dòng lệnh Linux, hãy xem phần này.

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

+0

Điều này phù hợp với tôi, cảm ơn bạn – Sergio

Các vấn đề liên quan