2013-07-23 17 views
7

Czy istnieje kanoniczna lokalizacja, w której można umieścić samodzielnie napisane paczki? Moje własne poszukiwania przyniosły tylko wpis na blogu o where to put version-independent pure Python packages i SO question for the canonical location under Linux, podczas gdy ja pracuję w systemie Windows.Gdzie mam umieścić moje samodzielnie napisane pakiety Pythona?

Moim przypadkiem użycia jest to, że chciałbym móc importować własne pakiety podczas sesji IPython, tak jak każdy pakiet site-package, bez względu na to, w którym katalogu roboczym rozpocząłem sesję. W Matlab, odpowiedni folder na przykład jest po prostu C:/Users/ojdo/Documents/MATLAB.

import mypackage as mp 
mp.awesomefunction() 
... 
+0

Wolę trzymać pliki w 'C: \ PythonXX \ Lib \ site-packages'. Ma to tę zaletę, że nie wymaga dodatkowej konfiguracji - domyślnie katalog ten znajduje się w 'sys.path'. – bbayles

+4

Zerknąłeś na [dokumentację] (http://docs.python.org/2/install/#how-installation-works)? Można również użyć zmiennej środowiskowej PYTHONPATH, jak wyjaśniono [w innej sekcji dokumentacji] (http://docs.python.org/2/install/#modifying-python-s-search-path). –

Odpowiedz

6

Dzięki twoadditional linków, znalazłam nie tylko zamierzone odpowiedź na moje pytanie, ale także rozwiązanie, które ja jak jeszcze więcej i to - ironicznie - zostało również wyjaśnione w moim pierwszym wyniku wyszukiwania, ale zaciemniane przez wszystkie zależne od wersji (in) lingo-pakiety.

odpowiedzi do pierwotnego pytania

Chciałem wiedzieć, czy istnieje kanoniczny (jak w „default”) lokalizacji dla moich pakietów własny napisane. I że istnieje:

>>> import site 
>>> site.USER_SITE 
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages' 

Docs na user scheme package installation stanie, że ten folder - jeśli istnieje - zostanie automatycznie dodany do sys.path.

Niestandardowe katalog dla własnych pakietów

  1. utworzyć katalog w dowolnym miejscu, na przykład C:\Users\ojdo\Documents\Python\Libs.
  2. Dodaj plik sitecustomize.py do folderu site-packages instalacji Python, tj. Do C:\Python27\Lib\site-packages (dla wszystkich użytkowników) lub site.USER_SITE (dla jednego użytkownika).
  3. Plik ten następnie wypełnia się następujący kod:

    import site 
    site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs') 
    
  4. Voilà, nowy katalog teraz jest automatycznie dodawany do sys.path w każdej sesji (I) Pythona.

Jak to działa: Pakiet site, który jest importowany automatycznie podczas każdego startu Pythona, również próbuje zaimportować pakiet sitecustomize dla niestandardowego pakietu modyfikacji ścieżek. W tym przypadku ten fałszywy pakiet składa się ze skryptu, który dodaje osobisty folder pakietu do ścieżki Python.

+0

Zrobię to, gdy tylko będzie to możliwe. Otrzymuję * "Możesz przyjąć własną odpowiedź jutro" * właśnie teraz. – ojdo

+0

Uwaga - w dokumentach Pythona występuje błąd - mają niepoprawny format. Mówi, że pakiety powinny znajdować się w "modules: userbase/lib/pythonX.Y/site-packages", ale katalog (dla wersji 3.5) ze strony.USER_SITE to "~/Library/Python/3.5/lib/python/site-packages "- zauważ, że XY nie ma. Moja witryna.USER_BASE to "~/Library/Python/3.5" –

7

Place źródłem pakietu gdziekolwiek chcesz, ale przynajmniej dają swój pakiet minimalny setup.py plik bezpośrednio na zewnątrz opakowania:

import setuptools 

setuptools.setup(name='mypackage') 

Potem fałszywy zainstalować pakiet do swojego pytona zainstalować'S site-packages przez wykonanie:

python setup.py develop 

To jest dużo jak działa python setup.py install, z wyjątkiem egg tylko wskazuje na drzewie źródłowym, więc nie trzeba po e install bardzo zmiana kodu źródłowego.

Wreszcie, powinieneś być w stanie zaimportować pakiet:

python -c "import mypackage as mp; print mp.awesomefunction()" 
1

Miałem to samo pytanie, a odpowiedź jest bardzo pomocne. Aby dodać trochę, natknąłem się na ten przykład, który jest pomocny do mnie:

http://python-packaging.readthedocs.io/en/latest/minimal.html

Jest to minimalny przykład jak zapakować swój własny kod, a właściwie go zainstalować lokalnie (Wyobrażam sobie to co tak naprawdę chcesz) lub rozpowszechniać na PyPI. Robienie rzeczy w sposób python.

+0

Rewizja zarówno dla treści, jak i "żartu". Następnie ... 'pip search funniest' – ojdo

Powiązane problemy