2016-02-18 12 views
7

W Visual Studio z PTVS Mam dwa oddzielne projekty Python, jeden zawiera plik źródłowy Python o nazwie lib.py do wykorzystania jako biblioteka funkcji i druga jest główną, która używa funkcji w bibliotece. Używam oświadczenie w głównym import odwołać z funkcji w projekcie biblioteki, ale pojawia się następujący błąd:PTVS: Jak odwołać lub użyć kodu źródłowego Python w jednym projekcie z drugiego projektu

No module named lib

I przede wszystkim program w F # w Visual Studio, więc mój sposób myślenia jest dodanie odniesienia do innych projektów .NET.

Jak mogę myśleć w sposób Pythonic, aby to osiągnąć?

Odpowiedz

14

Python nie używa odwołań takich jak .NET, ale używa przeszukiwanej ścieżki. Ścieżkę wyszukiwania należy zmodyfikować, aby zawierała katalog zawierający plik źródłowy. Zobacz:,,

Przeglądanie projektu w Visual Studio z eksploratorem rozwiązań przedstawia ścieżki wyszukiwania dla każdego projektu.

enter image description here

Aby zmodyfikować ścieżkę przeszukiwania:

Pobierz katalog dla pliku Pythona zawierającego kod źródłowy do zaimportowania.

np. lib.py

W Solution Explorer kliknij prawym przyciskiem myszy i wybierz opcję Kopiuj lib.py Path

enter image description here

Teraz do projektu, które będą importować moduł
np ConsoleDriver_Python

Kliknij prawym przyciskiem ścieżek wyszukiwania i wybierz Dodaj folder do ścieżki wyszukiwania ...

enter image description here

który wyświetla folder dialogowe

enter image description here

prawym przyciskiem myszy i wklej na ścieżce od schowek. Zmień również katalog, usuwając nazwę pliku.

enter image description here

Kliknij Select Folder

Teraz sprawdzenia projektu, aby upewnić Ścieżka wyszukiwania została zaktualizowana.

enter image description here

Błąd import powinien być wyczyszczony.

+1

To jest znakomita odpowiedź! Dobra robota! – Del

+0

Ciekawe: [PTVS - Projekty - Ścieżka wyszukiwania] (https://github.com/Microsoft/PTVS/wiki/Projects#search-paths) Oficjalna dokumentacja ścieżek wyszukiwania PTVS. –

+0

Link w powyższym komentarzu jest już martwy i przekierowuje do [Projekty Python] (https://docs.microsoft.com/en-us/visualstudio/python/python-projects). Po przejrzeniu nowej strony może być inny sposób, aby to osiągnąć, ponieważ PTVS ewoluuje. Kiedy dostaję czas, planuję zmienić odpowiedź, ale teraz jestem już głęboko w Prologu. –

3

Po prostu chciałem dodać poniższy, oprócz zweryfikowanej odpowiedzi, bardzo konkretny scenariusz.

Zostałem ostatnio poproszony o naprawienie tego samego problemu, który występował w przypadku OP na maszynie roboczej, na której niedawno dokonano migracji kont użytkowników do nowej domeny.

Setup: Visual Studio 2013 PTVS 2.2.30718 Anaconda 3,5

Zasadniczo Anaconda został zainstalowany na localmachine/UserA.

Po migracji użytkowników do nowej domeny (nowadomena/UserA), środowisko Python musiało zostać zaktualizowane z poziomu VS2013, klikając Widok> Inne systemy Windows> Środowiska Python.

Po skonfigurowaniu skrypty Pythona działały zgodnie z oczekiwaniami, chociaż żadne z odwołań do folderu wyszukiwania nie zadziałałyby. Zostały one następnie usunięte i ponownie dodane, ale bezskutecznie.

Wypróbowano różne inne rzeczy, w tym tworzenie całkiem nowych projektów i łączenie ich za pomocą Ścieżek wyszukiwania, ale bezskutecznie.

Jedyną rzeczą, która naprawiła problem, było ponowne zainstalowanie środowiska Python (w moim przypadku Anaconda3) poza kontem użytkownika (poprzez kliknięcie opcji "dla wszystkich użytkowników przy użyciu uprawnień administratora" podczas instalacji).

Następnie ponownie uruchomiłem, usunięto i ponownie dodano foldery wyszukiwania, a python działał zgodnie z oczekiwaniami, w tym wszystkie ścieżki wyszukiwania.

Mam nadzieję, że ktoś pomoże, a ja po prostu zmarnowane godziny go rozwiązać ...

D :)

+0

Miło wiedzieć. Dzięki. –

+0

Dobre znalezisko. Końcowy wskaźnik na ten temat - po ponownym zainstalowaniu Anacondy z uprawnieniami administratora, nadal trzeba ponownie uruchomić komputer w systemie Windows, aby go posortować, a VS poprawnie dopasować ścieżkę wyszukiwania. –

0

Albo można to zrobić w kodzie z następujących czynności:

sys.path.append("search path") 

Tak że kod może być uruchamiany poza IDE.

+0

Zazwyczaj automatycznie przesyłam każdą rozsądną odpowiedź na pytanie. Podczas gdy widzę twoją odpowiedź jako ważną opcję, nie chcę głosować, że jest poprawna, ponieważ 'sys.path.insert()' może być lepsza, ale tym bardziej, widzę informacje, które podajesz jako już obecne w SO i że powinien to być komentarz z linkiem. Rozumiem, że dobrze jest, aby inni wiedzieli o tym, więc nie będę głosował. –

Powiązane problemy