Edycja: w oparciu o komentarz Ulfa Rompe'a, ważne jest, abyś używał „1” zamiast „0” , w przeciwnym razie zepsujesz sys.path .
Pythona zajmuję się już od jakiegoś czasu (ponad rok) i zawsze jestem zdezorientowany, dlaczego ludzie zalecają używanie sys.path.append()zamiast sys.path.insert(). Pokażę.
Powiedzmy, że pracuję nad modułem o nazwie PyWorkbooks (który jest zainstalowany na moim komputerze), ale jednocześnie pracuję nad innym modułem (powiedzmy PyJob), który zawiera PyWorkbooks. Podczas pracy nad PyJob znajduję błędy w PyWorkbooks, które poprawiam, więc chciałbym zaimportować wersję rozwojową.
Istnieje wiele sposobów pracy nad obydwoma (na przykład mógłbym umieścić mój projekt PyWorkbooks w PyJob), ale czasami nadal będę musiał bawić się ścieżką. Jednak nie mogę po prostu zrobić a sys.path.append()do folderu, w którym znajduje się PyWorkbooks . Czemu? Ponieważ python najpierw znajdzie moje zainstalowane PyWorkbooks!
Dlatego musisz wykonać sys.path.insert (1, path_to_dev_pyworkbooks)
W podsumowaniu:
sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
lub:
sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
W przeszłości spowodowało to kilka problemów i naprawdę chciałbym, abyśmy (jako społeczność) zaczęli polecać sys.path.insert(1, path), tak jakbyś ręcznie wstawiał ścieżkę. Myślę, że można bezpiecznie powiedzieć, że jest to ścieżka, której chcesz używać!
Czy coś jest nie tak? To pytanie, które czasami mnie niepokoi i chciałem, aby było otwarte!
sys.path.insert(1, dev_folder)ale nadal nie znajduje modułu dev i używa tylko zainstalowanego modułu. Jak to naprawić?