Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

567
Visualizações
¿Cómo puede setup.py hacer referencia a otros archivos en el repositorio de origen?

Tengo problemas para compilar un paquete de python con python -m build . . setup.py falla en:

 FileNotFoundError: [Errno 2] No such file or directory: 'requirements/requirements.txt'

Es causado por el hecho de que la build está copiando primero los archivos a un directorio temporal. Pero solo está copiando source/ , README.md , setup.py , setup.cfg . No es copiar requirements/ .


Por razones complejas, mi setup.py necesita hacer referencia a otros archivos en la raíz del repositorio de origen, un directorio que contiene varios archivos requirements.txt. Realmente no vale la pena discutir por qué necesita estructurarse de esta manera, ya he pasado por ese largo debate con colegas.

Esto funciona bien cuando instalamos el paquete a través de pip install -e . o como una dependencia de git+ssh://... pero falla al compilar antes de enviar a un repositorio de pypi.

 setup.cfg setup.py source/ source/my_package/ requirements/ requirements/requirements.txt requirements/some-other-requirements.txt

setup.py hace referencia a este directorio antes de llamar a setup() .

 from pathlib import Path from setuptools import setup, find_namespace_packages requirements_dir = Path("requirements") # This is the line that fails: with (requirements_dir / "requirements.txt").open() as f: install_requires = list(f) setup( packages=find_namespace_packages(where="source", include=["acme_corp.*"], exclude=["tests", "tests.*"]), package_dir={"": "source"}, install_requires=install_requires, extras_require=optional_packages, )
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

build hace el trabajo correcto aquí. Después de construir el dist fuente, verifica si el resultado construido se puede instalar realmente. Y sin incluir los archivos bajo los requirements en el dist de origen, el dist de origen no se puede instalar y, por lo tanto, no se puede utilizar. Pruébalo:

 $ python -m build --sdist # builds fine, but the tar is broken: $ cd dist $ tar tf pkg-0.0.1.tar.gz | grep requirements # will be empty $ pip wheel pkg-0.0.1.tar.gz # will fail Processing ./pkg-0.0.1.tar.gz File was already downloaded Preparing metadata (setup.py) ... error ERROR: Command errored out with exit status 1: command: ... Complete output (9 lines): Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-req-build-wfzz27_k/setup.py", line 9, in <module> with (requirements_dir / "requirements.txt").open() as f: File "/usr/lib64/python3.9/pathlib.py", line 1252, in open return io.open(self, mode, buffering, encoding, errors, newline, File "/usr/lib64/python3.9/pathlib.py", line 1120, in _opener return self._accessor.open(self, flags, mode) FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-req-build-wfzz27_k/requirements/requirements.txt'

Para solucionarlo, escriba un MANIFEST.in junto con setup.py que incluye el directorio de requirements en el dist de origen. Contenido del archivo de ejemplo:

 graft requirements

La creación de un distrito de origen debería funcionar ahora; también puede verificar que el sdist ahora contiene todos los archivos para instalar desde:

 $ tar tf dist/pkg-0.0.1.tar.gz | grep requirements pkg-0.0.1/requirements/ pkg-0.0.1/requirements/requirements.txt ...

Esto solo se refiere a la distribución de origen, ya que la rueda ya está integrada en el host (su máquina) y ya no contiene un script de configuración. La construcción de ruedas también ignorará el archivo MANIFEST.in .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda