2012-05-29 26 views
6

Tôi không biết liệu pycharm có liên quan gì đến vấn đề hay không, hoặc nếu tôi là noob.sự cố khi nhập mô-đun python từ các gói khác (pycharm cung cấp tham chiếu chưa được giải quyết)

Đây là một ảnh chụp màn hình của bố trí thư mục của tôi và ba tập tin mã:

screenshot

Tôi đang sử dụng Pycharm trên cửa sổ và "my_working_directory" là thư mục làm việc của tôi. Bạn có thể thấy trong ảnh chụp màn hình trong mod1.py "từ package2.mod2" được gạch dưới có nghĩa là "tham chiếu chưa được giải quyết".

Khi tôi cố gắng để chạy mod1.py tôi nhận được:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py 
Traceback (most recent call last): 
    File "C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py", line 1, in <module> 
    from package2.mod2 import SomeClass 
ImportError: No module named package2.mod2 

Khi tôi chạy main.py tôi nhận được:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/main.py 
hi 

Tôi không hiểu tại sao một công trình và không phải là khác .

Vấn đề chính là pycharm cho tôi không tự động hoàn thành và từ mod1 nó không thể phát hiện gói2. Đây là một vấn đề lớn bởi vì package1 là gói xem của tôi, package2 là các mô hình hoặc các gói utils hoặc lib của tôi (trong một bộ điều khiển xem mô hình lớn). (ví dụ: https://github.com/coto/gae-boilerplate/blob/master/web/handlers.py pycharm không phát hiện bất kỳ câu lệnh nào từ lib.? import ?. (đưa ra tham chiếu chưa được giải quyết)

Đây có phải là cách tốt nhất để nhập gói không? có autocomplete

nên "my_working_directory" được làm thành một gói phần mềm bằng cách làm khác init tập tin py

+1

Hãy suy nghĩ bạn cần thêm nó vào đường dẫn python. bạn có thể thấy package1 từ main, nhưng khi import mod1 bạn đang ở mod1 nó không thể thấy package2 từ import ở đó bởi vì nó nằm trong thư mục cha, không phải trong package1. – GP89

+1

@ GP89 "thêm nó vào đường dẫn python của bạn", "nó" là gì? C: \ Users \ Robert \ PycharmProjects \ play \ my_working_directory \? Ngoài ra nó nên được công việc của tôi IDE để thêm này cho tôi? hoặc cho tất cả các dự án của tôi, tôi nên rối tung với các thiết lập đường dẫn windows dưới compter> properties> advanced settings> biến môi trường –

+4

Ah, tôi tìm thấy dưới pycharm> settings> project structure, tôi phải thay đổi root project từ/play sang/play /thư mục làm việc !!! THanks rất nhiều để giúp tôi tìm ra điều này. –

Trả lời

2

có thể là C:?/Users/Robert/PycharmProjects/chơi không phải là trên %PYTHON_PATH% của bạn

+0

Xin chào Jakob, tôi nghĩ bạn có thể làm được điều gì đó. Tôi đã thêm print sys.path vào mod1.py và main.py. Sau đó, tôi chạy mod1.py và ghi lại đường dẫn. Sau đó, tôi chạy main.py và ghi lại đường dẫn. Sự khác biệt của hai bộ đường dẫn là: set (['C: \\ Users \\ Robert \\ PycharmProjects \\ chơi \\ my_working_directory \\ package1']) set (['C: \\ Users \\ Robert \ \ PycharmProjects \\ \\ chơi my_working_directory ']) –

+0

trong mod1 tôi nhận được path1 = sys.path for i in path1: nếu "chơi" trong i: in i C: \ Users \ Robert \ PycharmProjects \ chơi \ my_working_directory \ package1 C: \ Users \ Robert \ PycharmProjects \ play –

+0

trong chính.py tôi nhận được: for i in path2: nếu "chơi" trong i: in i C: \ Users \ Robert \ PycharmProjects \ chơi \ my_working_directory C: \ Users \ Robert \ PycharmProjects \ chơi –

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