У меня constants.py сидит в корне проекта, затем у меня есть конфигурация sub lib в config subdir, файл в subdir импортирует constants.py.
Он уже работает отлично, просто не может не создать файл BUILD, который может сгенерировать pex-файл.
метод 1: я добавляю constants.py как одну зависимость
python_library(
sources = rglobs(‘config/*.py’),
name = ‘config’,
dependencies=[
‘3rdparty/python:requests’,
‘3rdparty/python:sh’,
‘constants.py’,
],
compatibility = ‘CPython>=2.7,<3’,
)
python_binary(
name = 'test',
source='main.py',
dependencies = [
'3rdparty/python:requests',
'3rdparty/python:Flask',
'3rdparty/python:CherryPy',
':config',
],
zip_safe=False,
compatibility = 'CPython>=2.7,<3',
)
Выдает ошибку: Сообщение об исключении: Каталог «Dir (путь =‘ constants.py ’)» не содержит файлов сборки.
метод 2: я также пытаюсь добавить константы как один исходный файл, например:
python_library(
sources = rglobs(‘config/*.py’, 'constants.py'),
name = ‘config’,
dependencies=[
‘3rdparty/python:requests’,
‘3rdparty/python:sh’,
],
compatibility = ‘CPython>=2.7,<3’,
)
python_binary(
name = 'test',
source='main.py',
dependencies = [
'3rdparty/python:requests',
'3rdparty/python:Flask',
'3rdparty/python:CherryPy',
':config',
],
zip_safe=False,
compatibility = 'CPython>=2.7,<3',
)
Тогда он дал мне эту ошибку: ImportError: Нет модуля с именем константы
метод 3: я также попытался определить все py-файлы, кроме main.py, как один и тот же ресурс, а затем в моей основной lib ссылается на allother как одну зависимость
resources(
name='allother',
sources=rglobs('config/*', 'constants.py'),
)
python_binary(
name = 'test',
source='main.py',
dependencies = [
'3rdparty/python:requests',
'3rdparty/python:Flask',
'3rdparty/python:CherryPy',
':allother',
],
zip_safe=False,
compatibility = 'CPython>=2.7,<3',
)
. / Main.py:
from config.config import Config
def main():
vs_manager = Config()
result = vs_manager.run()
return 0
if __name__ == "__main__":
main()
. / Constants.py:
pi = 3.14
/ конфигурации / config.py:.
import constants
class Config:
def __init__(self):
self.value = constants.pi
def run(self):
print(self.value)
Я ожидаю, что один из описанных выше методов должен сгенерировать pex-файл для моего проекта.