koddla

Yazılımcıları bilgi ile güçlendirir.

Python site-paketi dosyaları hangi klasördedir?

Python’da genel ve kullanıcı olmak üzere iki tür site paketi dizini bulunur.

  1. Genel site-paketleri (“dist paketleri“) sys.path ile listelenir
python -m site

Python kodu ile site modülünden çalıştırılan daha kısa bir liste için ise getsitepackages kullanılabilir:

python -c 'import site; print(site.getsitepackages())'

Not: getsitepackages Virtualenvs ile mevcut değil. Yine de yukarıdaki kod virtualenv’in site paketleri dizinini doğru bir şekilde listeler. Python 3’te bunun yerine sysconfig modülini kullanabilir:sys.path

python3 -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])'

2. Kullanıcı site paketleri dizini (PEP 370) ise, Python’un yerel paketlerinizi yüklediği yerdir:

python -m site --user-site

Bu komut varolmayan bir dizine işaret ediyorsa Python çıktısını denetleyin ve açıklamalar için bakın: python -m site --help

İpucu: pip list --user veya pip freeze --user kullanıcı için yüklenen tüm site paketlerinin listesini verir.

Python’da spesifik bir paketin yüklendiği dizin nasıl bulunur?

<package>.__path__ belirli bir paketin konumlarını tanımlamanızı sağlar:

$ python -c "import setuptools as _; print(_.__path__)"
['/usr/lib/python2.7/dist-packages/setuptools']

Python’da spesifik bir modülün yüklendiği dizin nasıl bulunur?

<module>.__file__ belirli bir modülün konumunu belirlemenizi sağlar:

$ python3 -c "import os as _; print(_.__file__)"
/usr/lib/python3.6/os.py

Debian stili paket bilgilerini göstermek için ise pip show <package> komutunu çalıştırın:

$ pip show pytest
Name: pytest
Version: 3.8.2
Summary: pytest: simple powerful testing with Python
Home-page: https://docs.pytest.org/en/latest/
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
Author-email: None
License: MIT license
Location: /home/peter/.local/lib/python3.4/site-packages
Requires: more-itertools, atomicwrites, setuptools, attrs, pathlib2, six, py, pluggy

Sanal ortamdan bağımsız site-paket konumu nasıl bulunur?

stdlib yolu ile, sürüm 2.7 ve 3.2+’da bulunan sysconfig modülünü kullanabiliriz. Bu yöntem etkin bir sanal ortamınız olup olmadığına bakılmaksızın çalışır.

Python şu anda sekiz yol kullanıyor (dokümanlar):

  • stdlib: platforma özgü olmayan standart Python kitaplık dosyalarını içeren dizin.
  • platstdlib: platforma özgü standart Python kitaplık dosyalarını içeren dizin.
  • platlib: siteye özgü, platforma özgü dosyalar için dizin.
  • purelib: siteye özgü, platforma özgü olmayan dosyalar için dizin.
  • include: platforma özgü olmayan üstbilgi dosyaları için dizin.
  • platinclude: platforma özgü üstbilgi dosyaları için dizin.
  • komut dosyaları: komut dosyası dosyaları için dizin. (script)
  • veri: veri dosyaları için dizin. (data)

Çoğu kullanıcı ‘purelib’ yolu ile ilgilenecektir (bazı durumlarda, ‘platlib’ ile de ilgilenebilirsiniz). Bu yol, sıradan Python paketlerinin pip gibi araçlarla yüklanaceği yerdir.

Sistem düzeyinde şöyle bir şey görürsünüz:

# Linux
$ python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))"
/usr/local/lib/python3.8/site-packages

# macOS (brew installed python3.8)
$ python3 -c "import sysconfig; print(sysconfig.get_path('purelib'))"
/usr/local/Cellar/python@3.8/3.8.3/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages

# Windows
C:\> py -c "import sysconfig; print(sysconfig.get_path('purelib'))"
C:\Users\wim\AppData\Local\Programs\Python\Python38\Lib\site-packages

Bir venv ile, böyle bir şey elde edersiniz

# Linux
/tmp/.venv/lib/python3.8/site-packages

# macOS
/private/tmp/.venv/lib/python3.8/site-packages

# Windows
C:\Users\wim\AppData\Local\Temp\.venv\Lib\site-packages

sysconfig.get_paths() işlevi, Linux’ta örnek olarak ilgili tüm yükleme yollarının bir kısmını döndürür:

>>> import sysconfig
>>> sysconfig.get_paths()
{'stdlib': '/usr/local/lib/python3.8',
 'platstdlib': '/usr/local/lib/python3.8',
 'purelib': '/usr/local/lib/python3.8/site-packages',
 'platlib': '/usr/local/lib/python3.8/site-packages',
 'include': '/usr/local/include/python3.8',
 'platinclude': '/usr/local/include/python3.8',
 'scripts': '/usr/local/bin',
 'data': '/usr/local'}

Modül olarak çağırılabilecek bir kabuk komut dosyası da bulunur: sysconfig

python -m sysconfig

Bir yanıt yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top