2010-06-01 16 views
12

Mam niestandardowy moduł w jednym z katalogów w mojej PYTHONPATH o tej samej nazwie, co jeden ze standardowych modułów bibliotecznych, tak aby po I import module_name ten moduł został załadowany. Jeśli chcę użyć oryginalnego standardowego modułu bibliotecznego, czy istnieje jakiś sposób zmuszenia Pythona do importowania ze standardowej biblioteki, a nie z katalogu PYTHONPATH, bez zmiany nazwy modułu niestandardowego i zmieniania każdego odniesienia, aby wskazywało na nową nazwę?Wymuszenie modułu importu ze standardowej biblioteki Python zamiast domyślnej wartości PYTHONPATH

+0

Co jest złego w zmianie nazwy modułu? –

+0

Wymagałoby to tylko wprowadzania zmian w dziesiątkach plików. Wygląda jednak na to, że to najlepsze rozwiązanie. – jrdioko

+0

Masz 'grep', więc nie powinno być zbyt trudno znaleźć każdego z nich i je naprawić. –

Odpowiedz

11

Idealnym rozwiązaniem byłoby, aby zmienić nazwę modułu coś nie w bibliotece standardowej.

Można również switch absolute imports on jeśli jesteś na Python 2.5+:

from __future__ import absolute_import 
+0

Jak używać względnych importów do pobrania standardowej wersji biblioteki? – jrdioko

+0

Źle zrozumiałem twoje pytanie, zredagowaną odpowiedź. –

+0

To naprawdę nie pomoże? –

5

Można wybrać moduł, który chcesz importować z modułem imp:

import imp 
mymodule = imp.load_module(name, file, pathname, description) 
9

nie uwagi.

Jeśli przez przypadek wybrano standardową nazwę modułu bibliotecznego, zmień nazwę modułu, aby zakończyć konflikt.

+0

Jest to prawdopodobnie najlepsze rozwiązanie, ponieważ nie powoduje zamieszania wśród odwiedzających programistów, a także fakt, że zachowanie importujące moduł, który nie był względnym importem, nie zmieni się po włączeniu importu bezwzględnego. –

-1

Najlepszym sposobem na to jest, aby umieścić swój projekt w jednym katalogu powiedzmy "myproject" że przebywa on:

/home/me/myproject

Zrób link symboliczny do myproject katalogu do jednego z ścieżki domyślne python, na przykład:

# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject

teraz, kiedy chcesz aby zaimportować moduł w ramach projektu, po prostu otwórz interpreterów języka Python.

>>> from myproject.mymodule import *

To będzie działać jak czar.

Jeszcze jedna rzecz, nie nazwij swojego projektu takim, jaki znajduje się na ścieżce pythona, więc nie będziesz mieć problemów podczas importowania.

+0

Lepszym sposobem byłoby użycie 'PYTHONPATH'. Nie używaj także 'from x import *', ponieważ powoduje ono pomylenie narzędzi do analizy statycznej i utrudnia zrozumienie skąd pochodzi zmienna. – bfontaine

Powiązane problemy