Kurallar
py_binary
Kural kaynağını görüntülemepy_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, imports, legacy_create_init, licenses, main, output_licenses, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
py_binary
, bir dizi .py
kaynak dosyasından (diğer py_library
kurallarına ait olabilir), programın çalışma zamanında ihtiyaç duyduğu tüm kodu ve verileri içeren bir *.runfiles
dizin ağacından ve programı doğru başlangıç ortamı ve verileriyle başlatan bir saplama komut dosyasından oluşan, yürütülebilir bir Python programıdır.
Örnekler
py_binary( name = "foo", srcs = ["foo.py"], data = [":transform"], # a cc_binary which we invoke at run time deps = [ ":foolib", # a py_library ], )
Başka bir ikili dosya veya testin (örneğin, bir java_test'in içinden bazı sahte kaynakları ayarlamak için bir python ikili dosyasını çalıştırma) içinden py_binary
çalıştırmak istiyorsanız doğru yaklaşım, diğer ikili dosyanın veya testin veri bölümünde py_binary
'ya bağlı olmasını sağlamaktır. Diğer ikili dosya, py_binary
dosyasını kaynak dizine göre bulabilir.
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testing"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. main belirtilmemişse bu, uygulamanın ana giriş noktası olan kaynak dosyanın adıyla aynı olmalıdır (uzantı hariç). Örneğin, giriş noktanızın adı main.py ise adınız main olmalıdır.
|
deps
|
Etiket listesi; varsayılan değer deps ile ilgili genel yorumları şu adreste bulabilirsiniz:
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler.
Bunlar genellikle py_library kurallarıdır.
|
srcs
|
Etiketlerin listesi; zorunlu Hedefi oluşturmak için işlenen kaynak (.py ) dosyalarının listesi.
Bu kapsamda, check-in yaptığınız tüm kodlar ve oluşturulan tüm kaynak dosyalar yer alır. Kitaplık hedefleri deps 'da, çalışma zamanında gereken diğer ikili dosyalar ise data 'de yer alır.
|
imports
|
Dize listesi; varsayılan değer PYTHONPATH 'ya eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" yerine koyma işlemine tabidir. Bu kural ve buna bağlı tüm kurallar için bu içe aktarma
dizinleri eklenecektir (Not: Bu kuralın bağlı olduğu kurallar değil). Her dizin, bu kurala bağlı
Mutlak yollara ( |
legacy_create_init
|
Tam sayı; varsayılan değer --incompatible_default_to_explicit_init_py kullanılmadığı sürece true (doğru) anlamına gelir. Yanlışsa kullanıcı, __init__.py dosyalarını (boş olabilir) oluşturmaktan ve bunları gerektiği şekilde Python hedeflerinin srcs bölümüne eklemekten sorumludur.
|
main
|
Etiket; varsayılan değer srcs içinde de listelenmelidir. Belirtilmezse bunun yerine name kullanılır (yukarıya bakın). name , srcs içindeki herhangi bir dosya adıyla eşleşmiyorsa main belirtilmelidir.
|
python_version
|
Dize; yapılandırılamaz; varsayılan değer deps ) Python 2 veya Python 3 için oluşturulup oluşturulmayacağı. Geçerli değerler "PY2" ve "PY3" (varsayılan) şeklindedir.
Python sürümü, komut satırında veya buna bağlı diğer yüksek hedefler tarafından belirtilen sürümden bağımsız olarak, bu özellik tarafından belirtilen sürüme her zaman (muhtemelen varsayılan olarak) sıfırlanır.
Hata uyarısı: Bu özellik, Bazel'in hedefiniz için oluşturduğu sürümü ayarlar ancak #4815 nedeniyle, ortaya çıkan saplama komut dosyası çalışma zamanında yanlış yorumlayıcı sürümünü çağırmaya devam edebilir. Gerekli olduğunda Python sürümüne işaret eden bir |
srcs_version
|
Dize; varsayılan değer srcs 'nın Python 2, Python 3 veya her ikisiyle de uyumlu olduğunu bildirir. Python çalışma zamanı sürümünü gerçekten ayarlamak için yürütülebilir bir Python kuralının (py_binary veya py_test ) python_version özelliğini kullanın.
İzin verilen değerler: Yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm koşulları getirdiğiyle ilgili teşhis bilgilerini almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt sonekli bir dosya oluşturur. Belirtilen hedef, sürüm çakışması nedeniyle oluşturulamamış olsa bile bu işlevin çalıştığını unutmayın.
|
stamp
|
Tam sayı; varsayılan değer
Damgalı ikili dosyalar, bağımlılıkları değişmediği sürece yeniden oluşturulmaz. |
py_library
Kural kaynağını görüntülemepy_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, imports, licenses, restricted_to, srcs_version, tags, target_compatible_with, testonly, visibility)
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan değer deps ile ilgili genel yorumları şu adreste bulabilirsiniz:
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler.
Bunlar genellikle py_library kurallarıdır.
|
srcs
|
Etiket listesi; varsayılan değer .py ) dosyalarının listesi.
Bu kapsamda, check-in yaptığınız tüm kodlar ve oluşturulan tüm kaynak dosyalar yer alır.
|
imports
|
Dize listesi; varsayılan değer PYTHONPATH 'ya eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" yerine koyma işlemine tabidir. Bu kural ve buna bağlı tüm kurallar için bu içe aktarma
dizinleri eklenecektir (Not: Bu kuralın bağlı olduğu kurallar değil). Her dizin, bu kurala bağlı
Mutlak yollara ( |
srcs_version
|
Dize; varsayılan değer srcs 'nın Python 2, Python 3 veya her ikisiyle de uyumlu olduğunu bildirir. Python çalışma zamanı sürümünü gerçekten ayarlamak için yürütülebilir bir Python kuralının (py_binary veya py_test ) python_version özelliğini kullanın.
İzin verilen değerler: Yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm koşulları getirdiğiyle ilgili teşhis bilgilerini almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt sonekli bir dosya oluşturur. Belirtilen hedef, sürüm çakışması nedeniyle oluşturulamamış olsa bile bu işlevin çalıştığını unutmayın.
|
py_test
Kural kaynağını görüntülemepy_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, imports, legacy_create_init, licenses, local, main, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
Bir py_test()
kuralı, testi derler. Test, bazı test kodlarının etrafındaki ikili sarmalayıcıdır.
Örnekler
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
Ana modül de belirtebilirsiniz:
py_test( name = "runtest_test", srcs = [ "runtest_main.py", "runtest_lib.py", ], main = "runtest_main.py", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan değer deps ile ilgili genel yorumları şu adreste bulabilirsiniz:
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler.
Bunlar genellikle py_library kurallarıdır.
|
srcs
|
Etiketlerin listesi; zorunlu Hedefi oluşturmak için işlenen kaynak (.py ) dosyalarının listesi.
Bu kapsamda, check-in yaptığınız tüm kodlar ve oluşturulan tüm kaynak dosyalar yer alır. Kitaplık hedefleri deps 'da, çalışma zamanında gereken diğer ikili dosyalar ise data 'de yer alır.
|
imports
|
Dize listesi; varsayılan değer PYTHONPATH 'ya eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" yerine koyma işlemine tabidir. Bu kural ve buna bağlı tüm kurallar için bu içe aktarma
dizinleri eklenecektir (Not: Bu kuralın bağlı olduğu kurallar değil). Her dizin, bu kurala bağlı
Mutlak yollara ( |
legacy_create_init
|
Tam sayı; varsayılan değer --incompatible_default_to_explicit_init_py kullanılmadığı sürece true (doğru) anlamına gelir. Yanlışsa kullanıcı, __init__.py dosyalarını (boş olabilir) oluşturmaktan ve bunları gerektiği şekilde Python hedeflerinin srcs bölümüne eklemekten sorumludur.
|
main
|
Etiket; varsayılan değer srcs içinde de listelenmelidir. Belirtilmezse bunun yerine name kullanılır (yukarıya bakın). name , srcs içindeki herhangi bir dosya adıyla eşleşmiyorsa main belirtilmelidir.
|
python_version
|
Dize; yapılandırılamaz; varsayılan değer deps ) Python 2 veya Python 3 için oluşturulup oluşturulmayacağı. Geçerli değerler "PY2" ve "PY3" (varsayılan) şeklindedir.
Python sürümü, komut satırında veya buna bağlı diğer yüksek hedefler tarafından belirtilen sürümden bağımsız olarak, bu özellik tarafından belirtilen sürüme her zaman (muhtemelen varsayılan olarak) sıfırlanır.
Hata uyarısı: Bu özellik, Bazel'in hedefiniz için oluşturduğu sürümü ayarlar ancak #4815 nedeniyle, ortaya çıkan saplama komut dosyası çalışma zamanında yanlış yorumlayıcı sürümünü çağırmaya devam edebilir. Gerekli olduğunda Python sürümüne işaret eden bir |
srcs_version
|
Dize; varsayılan değer srcs 'nın Python 2, Python 3 veya her ikisiyle de uyumlu olduğunu bildirir. Python çalışma zamanı sürümünü gerçekten ayarlamak için yürütülebilir bir Python kuralının (py_binary veya py_test ) python_version özelliğini kullanın.
İzin verilen değerler: Yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm koşulları getirdiğiyle ilgili teşhis bilgilerini almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfo -pyversioninfo.txt sonekli bir dosya oluşturur. Belirtilen hedef, sürüm çakışması nedeniyle oluşturulamamış olsa bile bu işlevin çalıştığını unutmayın.
|
stamp
|
Tam sayı; varsayılan değer |
py_runtime
Kural kaynağını görüntülemepy_runtime(name, bootstrap_template, compatible_with, coverage_tool, deprecation, distribs, features, files, interpreter, interpreter_path, licenses, python_version, restricted_to, stub_shebang, tags, target_compatible_with, testonly, visibility)
Python kodunu yürütmek için kullanılan bir Python çalışma zamanını temsil eder.
py_runtime
hedefi, platform çalışma zamanını veya derleme içi çalışma zamanını temsil edebilir. Platform çalışma zamanı, bilinen bir yoldaki sisteme yüklenmiş yorumlayıcıya erişirken yerleşik çalışma zamanı, yorumlayıcı görevi gören yürütülebilir bir hedefi işaret eder. Her iki durumda da "yorumlayıcı", komut satırında iletilen bir Python komut dosyasını standart CPython yorumlayıcısıyla aynı kurallara uyarak çalıştırabilen herhangi bir yürütülebilir ikili veya sarmalayıcı komut dosyası anlamına gelir.
Platform çalışma zamanı, doğası gereği hermetik değildir. Hedef platformun belirli bir yolda yorumlayıcı bulundurmasını zorunlu kılar. Yerleşik bir çalışma zamanı, sisteme giriş yapılmış bir yorumlayıcıya veya sistem yorumlayıcısına erişen bir sarmalayıcı komut dosyasına işaret edip etmediğine bağlı olarak hermetik olabilir veya olmayabilir.
Örnek:
py_runtime( name = "python-2.7.12", files = glob(["python-2.7.12/**"]), interpreter = "python-2.7.12/bin/python", ) py_runtime( name = "python-3.6.0", interpreter_path = "/opt/pyenv/versions/3.6.0/bin/python", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
bootstrap_template
|
Etiket; varsayılan değer |
coverage_tool
|
Etiket; varsayılan değer py_binary
ve py_test hedeflerinden kod kapsamı bilgilerini toplamak için kullanılacak bir hedeftir.
Ayarlanırsa hedef, tek bir dosya oluşturmalı veya yürütülebilir bir hedef olmalıdır. Tek dosyanın yolu veya hedef yürütülebilir ise yürütülebilir dosya, python kapsam aracının giriş noktasını belirler. Kapsam etkinleştirildiğinde hedef ve bu hedefin çalışma dosyaları, çalışma dosyalarına eklenir. Aracın giriş noktası, bir Python yorumlayıcısı tarafından yüklenebilir olmalıdır (ör. |
files
|
Etiket listesi; varsayılan değer |
interpreter
|
Etiket; varsayılan değer |
interpreter_path
|
Dize; varsayılan değer |
python_version
|
Dize; varsayılan değer "PY2" ve "PY3" şeklindedir.
Varsayılan değer, |
stub_shebang
|
Dize; varsayılan değer py_binary hedefleri yürütülürken kullanılan başlatma Python komut dosyasının başına eklenir.
Motivasyon için 8685 numaralı soruna göz atın. Windows için geçerli değildir. |