Kurallar
py_binary
py_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 .py
kaynak dosyası koleksiyonu (muhtemelen diğer py_library
kurallarına ait olabilir), çalışma zamanında programın ihtiyaç duyduğu tüm kod ve verileri içeren bir *.runfiles
dizin ağacı ve programı doğru başlangıç ortamı ve verilerle başlatan 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 program veya test içinden py_binary
çalıştırmak isterseniz (örneğin, bir java_test içinden sahte kaynak oluşturmak için bir python ikili programı çalıştırmanız) doğru yaklaşım, diğer ikili programın veya testi, veri bölümündeki py_binary
öğesine bağımlı hale getirmektir. Daha sonra diğer ikili program, kaynak dizine göre py_binary
konumunu bulabilir.
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testlib"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. main belirtilmezse bu değer, uygulamanın ana giriş noktası olan kaynak dosyanın adıyla (uzantı hariç) aynı olmalıdır. Örneğin, giriş noktanız main.py olarak adlandırılırsa adınız main olmalıdır.
|
deps
|
deps ile ilgili genel yorumlara bakın.
Bunlar genellikle py_library kurallarıdır.
|
srcs
|
.py ) dosyalarının listesi.
Bu, tüm check-in kodunuzu ve oluşturulan kaynak dosyalarınızı içerir. Kitaplık hedefleri deps klasörüne aitken, çalışma zamanında gereken diğer ikili dosyalar data klasörüne ait.
|
imports
|
PYTHONPATH içine eklenecek içe aktarma dizinlerinin listesi.
"Değişken oluşturma" değişikliğine tabidir. Bu içe aktarma dizinleri, bu kural ve ona bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değildir). Her dizin bu kurala bağlı olan
Hataya neden olan mutlak yollara ( |
legacy_create_init
|
--incompatible_default_to_explicit_init_py kullanılmadığı sürece varsayılan otomatik, "doğru" anlamına gelir. Yanlış değeri döndürülürse kullanıcı, (büyük olasılıkla boş) __init__.py dosyaları oluşturmaktan ve bu dosyaları gerektiği gibi Python hedeflerinin srcs bölümüne eklemekten sorumludur.
|
main
|
srcs içinde de listelenmelidir. Belirtilmemişse bunun yerine name kullanılır (yukarıya bakın). name , srcs öğesindeki hiçbir dosya adıyla eşleşmiyorsa main belirtilmelidir.
|
python_version
|
deps ) Python 2 veya Python 3 için oluşturulup oluşturulmayacağı. Geçerli değerler "PY2" ve "PY3" 'dir (varsayılan).
Python sürümü, komut satırında belirtilen sürümden veya buna bağımlı diğer daha yüksek hedefler tarafından belirtilen sürümden bağımsız olarak her zaman (muhtemelen varsayılan olarak) bu özellik tarafından belirtilen sürüme sıfırlanır. Mevcut Python sürümünde Hata uyarısı: Bu özellik, Bazel'ın hedefinizi oluşturduğu sürümü belirler, ancak #4815 nedeniyle, sonuçta ortaya çıkan saplama komut dosyası, çalışma zamanında yanlış çevirmen sürümünü çağırabilir. Gerektiğinde Python sürümüne işaret eden bir |
srcs_version
|
srcs öğesinin Python 2, Python 3 veya her ikisi ile uyumlu olduğunu tanımlar. Python çalışma zamanı sürümünü 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: Mevcut Python sürümünü bu özelliğin değerine göre yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimleri getirdiği hakkında teşhis bilgileri almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, -pyversioninfo.txt son ekine sahip bir dosya oluşturur. Bu dosya, hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi verir. Sürüm çakışması nedeniyle belirli bir hedefin oluşturulması başarısız olsa bile özelliğin çalıştığını unutmayın.
|
stamp
|
Damgalı ikili programlar, bağımlılıkları değişmediği sürece yeniden oluşturulmaz. |
py_library
py_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 |
Bu hedef için benzersiz bir ad. |
deps
|
deps ile ilgili genel yorumlara bakın.
Bunlar genellikle py_library kurallarıdır.
|
srcs
|
.py ) dosyalarının listesi.
Bu, tüm check-in kodunuzu ve oluşturulan kaynak dosyalarınızı içerir.
|
imports
|
PYTHONPATH içine eklenecek içe aktarma dizinlerinin listesi.
"Değişken oluşturma" değişikliğine tabidir. Bu içe aktarma dizinleri, bu kural ve ona bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değildir). Her dizin bu kurala bağlı olan
Hataya neden olan mutlak yollara ( |
srcs_version
|
srcs öğesinin Python 2, Python 3 veya her ikisi ile uyumlu olduğunu tanımlar. Python çalışma zamanı sürümünü 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: Mevcut Python sürümünü bu özelliğin değerine göre yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimleri getirdiği hakkında teşhis bilgileri almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, -pyversioninfo.txt son ekine sahip bir dosya oluşturur. Bu dosya, hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi verir. Sürüm çakışması nedeniyle belirli bir hedefin oluşturulması başarısız olsa bile özelliğin çalıştığını unutmayın.
|
py_test
py_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)
py_test()
kuralı bir test derler. Test, bir test kodlarının çevresindeki ikili sarmalayıcıdır.
Örnekler
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
Ana modülü belirtmek de mümkündür:
py_test( name = "runtest_test", srcs = [ "runtest_main.py", "runtest_lib.py", ], main = "runtest_main.py", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
deps
|
deps ile ilgili genel yorumlara bakın.
Bunlar genellikle py_library kurallarıdır.
|
srcs
|
.py ) dosyalarının listesi.
Bu, tüm check-in kodunuzu ve oluşturulan kaynak dosyalarınızı içerir. Kitaplık hedefleri deps klasörüne aitken, çalışma zamanında gereken diğer ikili dosyalar data klasörüne ait.
|
imports
|
PYTHONPATH içine eklenecek içe aktarma dizinlerinin listesi.
"Değişken oluşturma" değişikliğine tabidir. Bu içe aktarma dizinleri, bu kural ve ona bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değildir). Her dizin bu kurala bağlı olan
Hataya neden olan mutlak yollara ( |
legacy_create_init
|
--incompatible_default_to_explicit_init_py kullanılmadığı sürece varsayılan otomatik, "doğru" anlamına gelir. Yanlış değeri döndürülürse kullanıcı, (büyük olasılıkla boş) __init__.py dosyaları oluşturmaktan ve bu dosyaları gerektiği gibi Python hedeflerinin srcs bölümüne eklemekten sorumludur.
|
main
|
srcs içinde de listelenmelidir. Belirtilmemişse bunun yerine name kullanılır (yukarıya bakın). name , srcs öğesindeki hiçbir dosya adıyla eşleşmiyorsa main belirtilmelidir.
|
python_version
|
deps ) Python 2 veya Python 3 için oluşturulup oluşturulmayacağı. Geçerli değerler "PY2" ve "PY3" 'dir (varsayılan).
Python sürümü, komut satırında belirtilen sürümden veya buna bağımlı diğer daha yüksek hedefler tarafından belirtilen sürümden bağımsız olarak her zaman (muhtemelen varsayılan olarak) bu özellik tarafından belirtilen sürüme sıfırlanır. Mevcut Python sürümünde Hata uyarısı: Bu özellik, Bazel'ın hedefinizi oluşturduğu sürümü belirler, ancak #4815 nedeniyle, sonuçta ortaya çıkan saplama komut dosyası, çalışma zamanında yanlış çevirmen sürümünü çağırabilir. Gerektiğinde Python sürümüne işaret eden bir |
srcs_version
|
srcs öğesinin Python 2, Python 3 veya her ikisi ile uyumlu olduğunu tanımlar. Python çalışma zamanı sürümünü 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: Mevcut Python sürümünü bu özelliğin değerine göre yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimleri getirdiği hakkında teşhis bilgileri almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, -pyversioninfo.txt son ekine sahip bir dosya oluşturur. Bu dosya, hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi verir. Sürüm çakışması nedeniyle belirli bir hedefin oluşturulması başarısız olsa bile özelliğin çalıştığını unutmayın.
|
stamp
|
|
py_runtime
py_runtime(name, 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, bir platform çalışma zamanını veya yapı içi çalışma zamanını temsil edebilir. Platform çalışma zamanı, sistem tarafından yüklenen bir yorumlayıcıya bilinen bir yoldan erişir. Derleme içi çalışma zamanı ise çevirmen görevi gören yürütülebilir bir hedefe yönlendirir. Her iki durumda da "yorumlayıcı", standart CPython yorumlayıcısıyla aynı kuralları uygulayarak komut satırında geçirilen bir Python komut dosyasını çalıştırabilen yürütülebilir bir ikili program veya sarmalayıcı komut dosyasını ifade eder.
Platform çalışma zamanı, doğası gereği hermetik değildir. Hedef platformda belirli bir yolda bir çevirmenin bulunmasını zorunlu kılar. Derleme içi bir çalışma zamanı, kontrol edilen çevirmenlere veya sistem yorumlayıcıya erişen bir sarmalayıcı komut dosyasına yönlendirme yapıp yapmadığına 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 |
Bu hedef için benzersiz bir ad. |
coverage_tool
|
py_binary ve py_test hedeflerinden kod kapsamı bilgilerini toplamak için kullanılacak bir hedeftir.
Ayarlanırsa hedef ya tek bir dosya oluşturmalı ya da yürütülebilir bir hedef olmalıdır. Tek dosyanın yolu veya hedef yürütülebilirse yürütülebilir dosyanın yolu, python kapsam aracının giriş noktasını belirler. Kapsam etkinleştirildiğinde hedef ve çalıştırma dosyaları, çalıştırma dosyalarına eklenir. Aracın giriş noktası, bir python yorumlayıcısı tarafından yüklenebilir olmalıdır (ör. |
files
|
|
interpreter
|
|
interpreter_path
|
|
python_version
|
"PY2" ve "PY3" şeklindedir.
Varsayılan değer, |
stub_shebang
|
py_binary hedefleri yürütülürken kullanılan önyükleme yapan Python saplama komut dosyasının başına "Shebang" ifadesi eklendi.
Motivasyon için sayı 8685'e bakın. Windows için geçerli değildir. |