Poniższe informacje nie rozwiązują problemu OP, ale tytuł i błąd są dokładnie tym, z czym się spotkałem.
Jeśli twój projekt zawiera setup.py
skrypt, możesz zainstalować ten pakiet, w którym się znajdujesz, za pomocą python3 -m pip install -e .
lub python3 setup.py install
lub python3 setup.py develop
, a ten pakiet zostanie zainstalowany, ale nadal będzie można go edytować (więc zmiany w kodzie będą widoczne podczas importowania pakietu). Jeśli nie ma setup.py
, nadaj mu sens .
Zresztą problem, z którym boryka się OP, wydaje się już nie istnieć?
plik one.py
:
def function():
print("output")
plik two.py
:
import one
one.function()
chmod +x two.py
./two.py
Command line output: output
Inne rozwiązania wydają się `` brudne ''
W przypadku OP z 2 plikami testowymi modyfikacja ich do działania prawdopodobnie jest w porządku. Jednak w innych rzeczywistych scenariuszach metody wymienione w innych odpowiedziach prawdopodobnie nie są zalecane. Wymagają one zmodyfikowania kodu Pythona lub ograniczenia elastyczności (uruchamianie pliku Pythona z określonego katalogu) i ogólnie wprowadzają uciążliwości. A co, jeśli właśnie sklonowałeś projekt i tak się stanie? Prawdopodobnie już działa dla innych osób, a wprowadzanie zmian w kodzie nie jest konieczne. Wybrana odpowiedź wymaga również, aby ludzie uruchomili skrypt z określonego folderu, aby działał. Może to być źródłem długotrwałej irytacji, która nigdy nie jest dobra. Sugeruje również dodanie określonego folderu Pythona do PATH (można to zrobić za pomocą Pythona lub wiersza poleceń). Ponownie, co się stanie, jeśli zmienisz nazwę lub przeniesiesz folder w ciągu kilku miesięcy? Musisz ponownie wytropić tę stronę, i ostatecznie odkryjesz, że musisz ustawić ścieżkę (i że zrobiłeś to dokładnie kilka miesięcy temu), i że musisz po prostu zaktualizować ścieżkę (na pewno możesz użyć sys.path i ustawić ją programowo, ale to może być nadal niestabilne ). Wiele źródeł irytacji.
import sys; sys.path