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ć?